运维实战 kubernetes(k8s)之 pod 的建立
-
- 1. Pod管理
- 2. 资源清单
- 3. Pod生命周期
- 4. 控制器
1. Pod管理
- Pod 是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip。
- 一个 pod 类似一个豌豆荚,包含一个或多个容器(通常是docker),多个容器间共享IPC、Network和UTC namespace。
- kubectl 命令指南:
- 创建 应用:
可以看到此时集群给 pod 分配的 ip 是 ,该地址在初始化集群时是定义过的;此时运行在 server4 上;每个节点上的网段是不同的;默认情况下 的 不参加调度,网段应该是 0 网段;
在用 查看时,可以看到通过 来运行的 pod 并没有使用控制器,这种 pod 称为自主式 pod ;
这种自主式的 ,在删除时便会彻底删除;而通过控制器运行的 在删除之后,控制器会自动再次新建一个 ;
常用操作:
参数 表示退出不重启;默认是会重启服务的。
在用参加入 pod 时,第一个 表示 的名称,第二个表示 内容器的名称,当容器中和只有一个容器时,此处可以不加容器名称;
- service
service 是一个抽象概念,定义了一个服务的多个 pod 逻辑合集和访问 pod 的策略,一般把 service 称为微服务。
创建 service
再次创建一个 pod ,其还是运行在之前的主机上; 的策略就是最小化原则,之前调度的节点已经完成了镜像的下载,所以会优先调度,不用再次下载; 的镜像拉取策略时,不管镜像存在与否,都会尝试去拉取,当检测到存在时,就不再拉取。有更新时便会更新。
对于 ip 的动态变化,外部访问容器需要微服务;
用 控制器来新建 pod:此时创建的 pod 如果只删除 pod 是删不掉的,删除之后,控制器会再次拉起一个 pod,除非删除控制器。
动态拉伸:之前是一份,此时拉伸到
暴露控制器的端口信息;
[root@server2 ~]# kubectl expose deployment demo --port 80 --target-port 80service/demo exposed[root@server2 ~]# kubectl get svcNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEdemo ClusterIP 10.111.253.254 none> 80/TCP 10skubernetes ClusterIP 10.96.0.1 none> 443/TCP 2d23h[root@server2 ~]# kubectl describe svc demoName: demoNamespace: defaultLabels: app=demoAnnotations: none>Selector: app=demoType: ClusterIPIP Family Policy: SingleStackIP Families: IPv4IP: 10.111.253.254IPs:10.111.253.254Port: unset> 80/TCPTargetPort: 80/TCPEndpoints: 10.244.1.3:80,10.244.2.6:80Session Affinity: NoneEvents: none>[root@server2 ~]# kubectl get pod -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESdemo-5b4fc8bb88-flfq8 1/1 Running 0 9m2s 10.244.2.6 server4 none> none>demo-5b4fc8bb88-g4vz8 1/1 Running 0 6m6s 10.244.1.3 server3 来源:123坤
声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!