什么是Pod?
kind: Pod # 定义类型
metadata: # 元数据
name: nginx # pod名称,命名规范需符合RFC 1035规范
labels: # 自定义标签
app: nginx
spec: # 定义容器的详细信息
containers: # 容器列表
- name: nginx # 容器名称,需符合RFC 1035规范
image: nginx # 容器所用镜像
ports: # 容器要暴露的端口号列表
- containerPort: 80 端口号
kubectl get pod nginx -o yaml
kubectl get pod --show-labels
kubectl get rc,service
kubectl describe node k8s-master
kubectl describe pod nginx
kubectl delete -f nginx1.yaml
kubectl delete pod --all
#实时查看容器日志,想当于tail -f命令退出ctrl+c
#将容器80端口映射本地521端口
#查看命名空间,默认创建的pod都在default下,也可创建新的命名空间。
Pod生命周期跟Pod重启策略
pod的重启策略
变量Phase的取值还取决于结构体PodSpec中的RestartPolicy变量,这个RestartPolicy变量是用来设置Pod中容器重启策略的,包括三个可选值,分别是Always、OnFailure和Never。
Always:当容器失效时,由kubelet自动重启容器。
OnFailure:当容器终止运行或以不正常情况退出(退出码非0),由kubelet自动重启该容器。
Never:不对容器设置重启策略。
Pod探针
startupProbe:
k8s1.16版本后新加的探测方式,用于判断容器内应用程序是否已经启动,如果配置了startupProbe就会先禁止其他的探测,直到它成功为止,成功后将不在进行探测。
LivenessProbe:
用于探测容器是否运行,如果探测失败,kubelet会根据配置的重启策略进行相应的处理。若没有配置该探针,默认就是success。
存活性探测。判断pod是否需要重启。
ReadinessProbe:一般用于探测容器内的程序是否健康,它的返回值如果为success,那么就代表这个容器已经完成启动,并且程序已经是
可以接受流量的状态。
就绪性探测。判断pod是否能够提供正常服务。
Pod的探测方式
ExecAction
在容器内执行一个命令,如果返回值为0,则认为容器健康。
TcpSocketAction
通过TCP连接检查容器内的端口是否是通的,如果是通的就认为容器健康。
HttpGetAction
通过应该程序暴露的API地址来检查程序是否是正常的,如果状态码为200-400之间,则认为容器健康。
Pod退出流程
用户执行删除操作 kubectl delete pod nginx
pod状态会变成Terminating状态(这种状态停留默认时间为30秒)
在30秒期间,会从Endpoint中删除该pod的IP地址,最后执行yaml文件中Prestop命令。