k8s之 Pod简介

k8s之 Pod简介

1、Pod

kubernetes中,最基础单元就是Pod。Pod主要用来管理容器,通常Pod中包含的是一个调用链的服务。例如Nginx 和 Django

1.1、Pod的生命周期

[root@k8s-master-01 k8s]# vim pod.yaml
kind: Pod
apiVersion: v1
metadata:
  name: testv1
spec:
  containers:
    - name: nginx
      image: nginx
      
# 部署
[root@k8s-master-01 k8s]# kubectl apply -f pod.yaml 
pod/testv1 created

# 查看
[root@k8s-master-01 k8s]# kubectl get pods 
NAME     READY   STATUS    RESTARTS   AGE
testv1   1/1     Running   0          52s
Pod名称  启动数量  运行状态   重启次数   启动时间

kubectl get pods -o wide  #显示更多

1.2、Pod的重启策略(restartPolicy)

当Pod出现了问题时,Pod怎么解决。
Always		:无论什么情况下退出,都重启
OnFailure	:只有当非正常情况下退出时,才会重启
Never		:无论什么情况下退出,都不重启

1.3、Pod中容器的拉取策略(imagePullPolicy)

容器的 imagePullPolicy 和镜像的标签会影响 kubelet 尝试拉取(下载)指定的镜像。
IfNotPresent	: 当本地没有该镜像时,下载
Always			:无论本地有没有该镜像,都去远程下载
Never			:无论本地有没有该镜像,都不去远程下载
kind: Pod
apiVersion: v1
metadata:
  name: testv1
spec:
  restartPolicy: OnFailure
  containers:
    - name: nginx
      image: nginx
      imagePullPolicy: IfNotPresent

# 删除Pod
[root@k8s-master-01 k8s]# kubectl delete -f pod.yaml 
# 部署Pod
[root@k8s-master-01 k8s]# kubectl apply -f pod.yaml 
pod/testv1 created

1.4、静态Pod和动态Pod之间的区别

静态Pod:没有控制器
动态Pod:有控制器

1.5、Pod的回调钩子

1.5.1、启动回调
#当Pod中所有的容器创建完成之后,立即调用的命令。 lifecycle 里面有postStart(创建后执行) 和PreStop(终止之前回调)

执行失败:如果启动回调钩子执行失败,容器无法进入正常启动状态。

exec		: 执行命令

kind: Pod
apiVersion: v1
metadata:
  name: testv1
spec:
  restartPolicy: OnFailure
  containers:
    - name: nginx
      image: nginx:1.18
      imagePullPolicy: IfNotPresent
      lifecycle:
        postStart:
          exec:
            command:
              - "/bin/sh"
              - "-c"
              - "echo 'Hello World!' > /root/1.txt"


httpGet		: 通过HTTP协议访问

kind: Pod
apiVersion: v1
metadata:
  name: testv1
spec:
  restartPolicy: OnFailure
  containers:
    - name: nginx
      image: nginx:1.18
      imagePullPolicy: IfNotPresent
      lifecycle:
        postStart:
          httpGet:
            port: 80
            path: /
            host: www.baidu.com


tcpSocket 	: 通过Ping命令,探测端口
kind: Pod
apiVersion: v1
metadata:
  name: testv1
spec:
  restartPolicy: OnFailure
  containers:
    - name: nginx
      image: nginx:1.18
      imagePullPolicy: IfNotPresent
      lifecycle:
        postStart:
          tcpSocket:
            port: 80
            host: 106.13.81.75

1.5.2、就绪性检测
#检测容器是否正常运行。

执行失败:如果就绪性检测执行失败,Pod会立即驱离出负载均衡。

exec		: 执行命令
httpGet		: 通过HTTP协议访问
tcpSocket 	: 通过Ping命令,探测端口
1.5.3、存活性检测
#检测容器是否正常启动。

执行失败:如果存活性检测执行失败,Pod会按照一定时间周期不断重启,直至Pod正常启动。

exec		: 执行命令
httpGet		: 通过HTTP协议访问
tcpSocket 	: 通过Ping命令,探测端口
1.5.4、结束回调
#当Pod收到了销毁指令时,立即执行。

执行失败:如果结束回调执行失败,容器依然会终止。

exec		: 执行命令
httpGet		: 通过HTTP协议访问
tcpSocket 	: 通过Ping命令,探测端口
posted @ 2022-01-06 10:14  迪迦张  阅读(239)  评论(0编辑  收藏  举报