k8s中的资源
集群资源分类
- 名称空间级别
使用ku’beadm安装的时候 所有系统组件安装放在kube-system命名空间下运行
例如使用kubectl get pod 的情况时默认是kubectl get pod -n default - 集群级别
- 元数据型
资源清单
YAML
常用字段解释说明
使用命令kubectl explain pod
即可查看pod参数项所有说明
如果想细看pod某个参数描述信息kubectl explain pod.apiversion
创建pod yaml文件必须存在的字段
创建pod主要对象
创建pod额外的参数项
pod demo
编辑pod yaml文件
kubectl appply -f pod.yaml
通过yaml创建pod
查看pod启动失败原因
kubectl describe pod pod名称
查看对应pod中的信息
查看名称为app的容器是正常启动的
查看test容器是启动报错的
使用kubectl log pod pod名称 -c 容器名称
查看pod中对应容器的日志显示80端口被占用
使用kubectl delete pod pod名
删除pod
将pod中test容器的yaml删除重新启动即可看pod中容器启动成功
容器生命周期
创建pod后会先执行一个pause容器再执行初始化容器initc 最后才执行C容器,
- readiness:就绪检测 ,通过tcp连接,命令,http协议状态等判断服务是否可以,如果就绪检测服务可用,则将pod设置为running状态
- liveness:生存检测,当通过某个机制容器内部无法对外正常提供服务的时候,将pod重启或者重建pod等操作
init容器解释:
init C 容器创建demo:
创建对应pod
查看pod
查看pod中的容器
查看到 init-myservice init c 容器 一直无法解析,所以一直循环无法创建pod成功
创建一个新的svc
创建完svc后,使用kubectl get pod继续查看前面创建的pod,即可查看到init的容器已经启动一个
查看svc,因为启动svc后,pod创建会先请求k8s中的2个dns,svc启动会将svc的名称注册进2个k8s自带的dns中,pod请求的时候通过k8s中的dns即可解析nslookup的域名请求到对应的svc上面.
同理创建名称为mydb的svc
再次查看pod状态为running
init c 容器的特殊说明
容器探针
readinessProbe和livenessProbe
就绪检测
查看pod状态,虽然pod是running状态,但是pod未ready
查看容器日志,readnessProbe失败
使用kubectl exec pod名称 -it -- /bin/sh
进入对应pod容器中,如果有pod中有多个容器需要加参数-c 容器名称,创建index.html 并且推出
再次查看pod status为running,ready
存活检测
命令检测
创建完livenessProbe 存活检测后使用命令
kubectl get pod pod名称 -w
监控查看pod变化
可以看到该pod restarts 重启次数增加,因为容器启动后,创建/tmp/live目录后进程睡眠60s,存活检测成功,睡眠后删除目录,存活检测失败会停掉pod,然后pod自动重启再次重新创建/tmp/live目录重新拉起pod
http检测
创建后pod是running状态
并且直接访问容器里面的index.html可以访问到
进入容器中将/index.hmtl文件删除掉
查看到对应pod已经重启一次
tcp检测
创建pod,查看存活检测不满足,所以重启pod