pod的创建流程

我们知道 kubectl 是直接操作 APIServer 的,所以就相当于把我们的清单提交给了 APIServer,然后集群获取到清单
描述的应用信息后存入到 etcd 数据库中,然后 kube-scheduler 组件发现这个时候有一个 Pod 还没有绑定到节点
上,就会对这个 Pod 进行一系列的调度,把它调度到一个最合适的节点上,然后把这个节点和 Pod 绑定到一起(写回到
etcd),然后节点上的 kubelet 组件这个时候 watch 到有一个 Pod 被分配过来了,就去把这个 Pod 的信息拉取下
来,然后根据描述通过容器运行时把容器创建出来,最后当然同样把 Pod 状态再写回到 etcd 中去,这样就完成了一整个
的创建流程。

我们可以创建的容器和一个已经存在的容器共享一个 Network Namespace,在运行容器(如是 Docker 容器)
的时候需要 #%net=container:目标容器名 这个数就可以了,但是这模式有一个明显问题那就是容器的
有先后顺序问题那么 Pod 怎么理这个问题的呢?就是入一个中容器(没有什么一个中件解
了的?),这个容器叫做 Infra 容器,而且这个容器在 Pod 都是第一个被创建的容器,这样是不是其容器都
入到这个 Infra 容器就可以了,这样就完实现了 Pod 中的所有容器都和 Infra 容器共享同一个 Network
Namespace 了,如下

 


创建tocken
kubectl -n kubernetes-dashboard create token admin-user
kubectl get deployment

kubectl get deployment -l chapter=first-app 根据源数据标签去匹配
kubectl get pods -l app=nginx --watch 可以看到pod的滚动更新过程,创建一个新的pod,然后杀掉旧的pod 在创建一个新的pod 交替替换的
kubectl delete -f nginx.yaml

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2023-04-04 13:06  人生信条~~  阅读(223)  评论(0编辑  收藏  举报