前言
1.1:pod的容器分类与镜像拉取策略
-
pod在k8s中是:
1、最小部署单页
2、一组容器的集合
3、一个pod中的容器共享网络命名空间
4、pod是短暂的
-
pod的容器分类:
1、infrastructure container:基础容器
-
维护整个pod网络空间:可以在node节点操作查看容器的网络
[root@node01 ~]# cat /opt/k8s/cfg/kubelet KUBELET_OPTS="--logtostderr=true \ --v=4 \ --hostname-override=192.168.233.132 \ --kubeconfig=/opt/k8s/cfg/kubelet.kubeconfig \ --bootstrap-kubeconfig=/opt/k8s/cfg/bootstrap.kubeconfig \ --config=/opt/k8s/cfg/kubelet.config \ --cert-dir=/opt/k8s/ssl \ --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0" '//是基础容器'
2、initcontainers:初始化容器
- 先于业务容器开始执行,原先pod中容器是并行开启,现在进行了改进
- 无论容器写在初始化容器前还是写在初始化容器后,最先执行的都是初始化容器。只有初始化容器执行成功后才可以启动容器。
- 初始化容器的应用场景一般是多容器,例如:mysql和业务分开两个容器。将业务设为初始化容器,并检查mysql是否启动,若mysql启动,则业务容器启动;否则业务容器等待mysql启动。
3、container:业务容器
- 业务容器就是我们创建的pod资源内的容器服务,业务容器也叫APP容器,并行启动
-
-
镜像拉取策略(image PullPolicy)
1、ifnotpresent:默认值,镜像在宿主机上不存在时会拉取
2、always:每次创建pod都会重新拉取一次镜像
3、never:pod永远不会主动拉取这个镜像
-
查看镜像拉取策略(master节点查看):
[root@master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx-dbddb74b8-5s6h7 1/1 Running 1 10d nginx-test-d55b94fd-9zmdj 1/1 Running 0 27h nginx-test-d55b94fd-b8lkl 1/1 Running 0 27h nginx-test-d55b94fd-w4c5k 1/1 Running 0 27h [root@master ~]# kubectl edit deploy/nginx
-
尝试编辑一个pod并指定拉去策略
[root@master ~]# cd test/ [root@master test]# ls nginx-service-test.yaml nginx-test02.yaml nginx-test01.yaml nginx-test.yaml [root@master test]# cat > pod1-test.yaml <<EOF > apiVersion: v1 > kind: Pod > metadata: > name: mypod > spec: > containers: > - name: nginx > image: nginx:1.14 > imagePullPolicy: Always > EOF [root@master test]# kubectl create -f pod1-test.yaml '//如果需要更新容器,需要删除原先的容器:kubectl delete -f pod1-test.yaml,修改yaml文件后使用apply命令重新部署:kubectl apply -f pod1-test.yaml ' pod/mypod created [root@master test]# kubectl get pod NAME