k8s基础资源之pod详解
k8s基础资源之pod详解
文档配视频效果更佳哦:视频传送门---->视频地址
Kubernetes 是用来管理容器集群的平台。既然是管理集群,那么就存在被管理节点,针对每个 Kubernetes 集群都由一个 Master 负责管理和控制集群节点。
我们通过 Master 对每个节点 Node 发送命令。简单来说,Master 就是管理者,Node 就是被管理者。
Node 可以是一台机器或者一台虚拟机。在 Node 上面可以运行多个 Pod,Pod 是 Kubernetes 管理的最小单位,同时每个 Pod 可以包含多个容器(Docker)。
主节点:承载 k8s 的控制和管理整个集群系统的控制面板
工作节点:运行用户实际的应用(应用服务,微服务)
1、pod相当于逻辑主机,每个pod都有自己的ip地址
2、pod内的容器共享相同的ip和端口空间
3、默认情况下,每个容器的文件系统与其他容器完全隔离
4、pod 是逻辑主机,其行为与非容器世界中的物理主机或虚拟机非常相似。此外,运行在同一个pod中的进程与运行在同一物理机或虚拟机上的进程相似,只是每个进程都封装在一个容器之中。
创建pod的两种方式
1.命令方式
# 创建一个nginx pod
kubectl run --help
[root@k8s-master01 ~]# kubectl run nginx --image=nginx:1.18
[root@k8s-master01 ~]# kubectl get pod -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
busybox 1/1 Running 31 (20m ago) 31h 172.171.14.246 k8s-node02 <none> <none>
hazelcast 0/1 ImagePullBackOff 0 49m 172.171.14.255 k8s-node02 <none> <none>
nginx 1/1 Running 0 7s 172.171.14.195 k8s-node02 <none> <none>
curl 172.171.14.195
# 进入pod
[root@k8s-master01 ~]# kubectl exec -it nginx bash
# 删除pod
[root@k8s-master01 ~]# kubectl delete pod nginx
pod "nginx" deleted
[root@k8s-master01 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 30 30h
[root@k8s-master01 ~]# kubectl get pod nginx -o yaml
2.yaml文件方式
Kubernetes只支持YAML和JSON格式创建资源对象
JSON格式用于接口之间消息的传递,YAML格式用于配置和管理
YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便。它实质上是一种通用的数据串行化格式。
[root@k8s_master ~]# vim nginx-deploy.yaml
apiVersion: apps/v1 #版本号,pod资源
kind: Deployment #类型/控制器
metadata: #数据标签
name: nginx-deployment
labels: #子标签
app: nginx #业务容器
spec:
replicas: 3 #副本集
selector: #选择器
matchLabels: #匹配标签
app: nginx #对应上面的业务容器
template: #模板
metadata:
labels:
app: nginx
spec:
containers: #容器
- name: nginx #对应上面的业务容器
image: nginx:1.18 #镜像
ports:
- containerPort: 80 #容器端口信息
---
apiVersion: v1 #版本号
kind: Service #服务类型
metadata:
name: nginx-service
labels:
app: nginx
spec:
type: NodePort #端口映射
ports:
- port: 80 #内部端口
targetPort: 80 #映射端口
selector: #选择器/
app: nginx #选择业务进行发布
[root@k8s_master01 ~]# kubectl create -f nginx-deploy.yaml --dry-run
[root@k8s_master01 ~]# kubectl create -f nginx-deploy.yaml
[root@k8s-master01 pod]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 8d
nginx-service NodePort 10.105.121.207 <none> 80:32042/TCP 6s
# 浏览器访问
http://192.168.1.114:32042/
技术是没有终点的,也是学不完的,最重要的是活着、不秃。 学习看书还是看视频,都不重要,重要的是学会,欢迎关注,我们的目标---不秃。
---更多运维开发交流及软件包免费获取请加V: Linuxlaowang