


示例:将pod转化为yaml资源清单

init容器能能做什么
https://kubernetes.io/zh/docs/concepts/workloads/pods/init-containers/
此yaml参考官方文件写成,意思是init进行service检查,如果不通过则一直初始化,如果通过,则运行主程序。
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: myapp:v1
initContainers:
- name: init-myservice
image: busybox
command: ['sh', '-c', "until nslookup myservice.default.svc.cluster.local; do echo waiting for myservice; sleep 2; done"]
一直处于init状态,没有就绪




无法完成解析,主程序无法执行

所以创建一个service服务来暴露pod,启动主程序
kind: Service
apiVersion: v1
metadata:
name: myservice
spec:
ports:
- protocol: TCP
port: 80
targetPort: 9376
init解析完成

内网可以解析到svc

探针能做什么
在init完成之后,liveness和readness工作
liveness和readness是探针,会对mainC检查
https://kubernetes.io/zh/docs/concepts/workloads/pods/pod-lifecycle/


readness探针在0/1

用户访问pod的流程:
user -> kubectl -> apiserver -> cri(容器运行时间) -> (ori -> linx) -> pause(pod之父,最精简,容纳多个pod,docker 镜像,根容器) -> init(containers) -> containers
使用探针
1.高级 liveness 探针示例(存活检测)
metadata:
name: myapp
spec:
containers:
- name: myapp
image: myapp:v1
imagePullPolicy: IfNotPresent
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 1 1秒钟后检测
timeoutSeconds: 2 延迟2秒
periodSeconds: 2 每隔2秒检查一次
检测出错,不断重启

2.高级 readness 探针示例
apiVersion: v1
kind: Pod
metadata:
name: myapp
spec:
containers:
- name: myapp
image: nginx
imagePullPolicy: IfNotPresent
readinessProbe:
httpGet:
path: /test.html
port: 80
initialDelaySeconds: 1
periodSeconds: 2
timeoutSeconds: 2
就绪检测没有通过

404错误



一直在做就绪检测


本文深入探讨了Kubernetes中Pod的生命周期,包括init容器的作用及如何通过配置探针(liveness与readiness)来监控容器健康状态。通过示例展示了如何使用YAML定义Pod,以及如何设置探针进行容器健康检查。
919

被折叠的 条评论
为什么被折叠?



