炒沙作縻终不饱,缕冰文章费工巧。这篇文章主要讲述#云原生征文#深入了解k8s的Pod相关的知识,希望能为你提供帮助。
深入了解k8s的Pod一、什么是Pod
?SideCar(为应用赋能)?
?
二、Pod使用# 这里是 Pod 模版
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: hello
image: busybox
command: [sh, -c, echo "Hello, Kubernetes!" &
&
sleep 3600]
restartPolicy: OnFailure
# 以上为 Pod 模版
三、Pod生命周期
编写yaml测试生命周期
临时容器:线上排错。
有些容器基础镜像。线上没法排错。使用临时容器进入这个Pod。临时容器共享了Pod的所有。临时容器有Debug的一些命令,排错完成以后,只要exit退出容器,临时容器自动删除
例如:
java:dump, jre 50mb。jdk 150mb
jre 50mb: jdk作为临时容器
使用临时容器的步骤:
临时容器需要开启特性门控 --feature-gates="EphemeralContainers=true"
在所有组件,api-server、kubelet、scheduler、controller-manager都得配置
1、声明一个临时容器。准备好json文件
"apiVersion": "v1",
"kind": "EphemeralContainers",
"metadata":
"name": "my-nginx666" //指定Pod的名字
,
"ephemeralContainers": [
"command": [
"sh"
],
"image": "busybox",//jre的需要jdk来调试
"imagePullPolicy": "IfNotPresent",
"name": "debugger",
"stdin": true,
"tty": true,
"terminationMessagePolicy": "File"
]
2、使用临时容器,应用一下即可
四、静态Pod在 /etc/kubernetes/manifests 位置放的所有Pod.yaml文件,机器启动kubelet自己就把它启动起来。
kubectl replace --raw /api/v1/namespaces/default/pods/my-nginx666【pod名】/ephemeralcontainers
-f ec.json
静态Pod一直守护在这个机器上
五、Probe 探针机制(健康检查机制)每个容器三种探针(Probe)
?如果检测失败就会重新启动这个容器?
?
Probe配置项
?initialDelaySeconds?
?:容器启动后要等待多少秒后存活和就绪探测器才被初始化,默认是 0 秒,最小值是 0。这是针对以前没有?periodSeconds?
?:执行探测的时间间隔(单位是秒)。默认是 10 秒。最小值是 1。?successThreshold?
?:探测器在失败后,被视为成功的最小连续成功数。默认值是 1。
官方参考文档:??配置存活、就绪和启动探测器 | Kubernetes???failureThreshold?
?:当探测失败时,Kubernetes 的重试次数。 存活探测情况下的放弃就意味着重新启动容器。 就绪探测情况下的放弃 Pod 会被打上未就绪的标签。默认值是 3。最小值是 1。?timeoutSeconds?
?:探测的超时后等待多少秒。默认值是 1 秒。最小值是 1。
编写yaml测试探针机制
apiVersion: v1
kind: Pod
metadata:
name: "nginx-start-probe02"
namespace: default
labels:
app: "nginx-start-probe02"
spec:
volumes:
- name: nginx-vol
hostPath:
path: /app
- name: nginx-html
hostPath:
path: /html
containers:
- name: nginx
image: "nginx"
ports:
- containerPort: 80
startupProbe:
exec:
command:["/bin/sh","-c","cat /app/abc"]## 返回不是0,那就是探测失败
# initialDelaySeconds: 20 ## 指定的这个秒以后才执行探测
periodSeconds: 5## 每隔几秒来运行这个
timeoutSeconds: 5##探测超时,到了超时时间探测还没返回结果说明失败
successThreshold: 1 ## 成功阈值,连续几次成才算成功
failureThreshold: 3 ## 失败阈值,连续几次失败才算真失败
volumeMounts:
- name: nginx-vol
mountPath: /app
- name: nginx-html
mountPath: /usr/share/nginx/html
livenessProbe:## nginx容器有没有 /abc.html,就绪探针
# httpGet:
#host: 127.0.0.1
#path: /abc.html
#port: 80
#scheme: HTTP
# periodSeconds: 5## 每隔几秒来运行这个
# successThreshold: 1 ## 成功阈值,连续几次成才算成功
# failureThreshold: 5 ## 失败阈值,连续几次失败才算真失败
exec:
command:["/bin/sh","-c","cat /usr/share/nginx/html/abc.html"]## 返回不是0,那就是探测失败
# initialDelaySeconds: 20 ## 指定的这个秒以后才执行探测
periodSeconds: 5## 每隔几秒来运行这个
timeoutSeconds: 5##探测超时,到了超时时间探测还没返回结果说明失败
successThreshold: 1 ## 成功阈值,连续几次成才算成功
failureThreshold: 3 ## 失败阈值,连续几次失败才算真失败
readinessProbe: ##就绪检测,都是http
httpGet:
# host: 127.0.0.1###不行
path: /abc.html## 给容器发请求
port: 80
scheme: HTTP ## 返回不是0,那就是探测失败
initialDelaySeconds: 2 ## 指定的这个秒以后才执行探测
periodSeconds: 5## 每隔几秒来运行这个
timeoutSeconds: 5##探测超时,到了超时时间探测还没返回结果说明失败
successThreshold: 3 ## 成功阈值,连续几次成才算成功
failureThreshold: 5 ## 失败阈值,连续几次失败才算真失败
# livenessProbe:
#exec: ["/bin/sh","-c","sleep 30;
abc "]## 返回不是0,那就是探测失败
#initialDelaySeconds: 20 ## 指定的这个秒以后才执行探测
#periodSeconds: 5## 每隔几秒来运行这个
#timeoutSeconds: 5##探测超时,到了超时时间探测还没返回结果说明失败
#successThreshold: 5 ## 成功阈值,连续几次成才算成功
#failureThreshold: 5 ## 失败阈值,连续几次失败才算真失败
【#云原生征文#深入了解k8s的Pod】
推荐阅读
- 基本脚本编译------------(重定向输入输出与数学计算)
- 基本脚本编译------------(创建脚本与使用变量)
- tar命令参数列表说明
- 创建函数-----------(在函数中使用变量向函数传递参数在函数中处理变量关键字local)
- 数据驱动测试(DDT)与使用外部数据源
- 创建函数-----------(函数递归 创建库source命令)
- AC-DMIS 5.3RPS找正
- AC-DMIS 5.3 模型坐标系转换
- RationalDMIS2020 模型坐标系转换