K8S基础-Pod
K8S基础-基本概念一,Pod1.1 创建一个pod1.2更改Pod的启动命令和参数。1.3 Pod状态及Pod故障排查命令1.4 Pod镜像拉取策略1.5 Pod 重启策略1.6 Pod的三种探针1.7 Pod探针的实现方式1.8 livenessProbe和readinessProbe1.9 配置StartupProbe1.10 gRPC 探针。
这里写自定义目录标题
K8S基础-基本概念
一,Pod
1.1 创建一个pod
-
什么是pod
pod可简单地理解为是一组,一个或多个容器构成,每个Pod还包含一个pause容器。
Pause容器是Pod的父容器,它主要通过负责僵尸进程的回收管理,同时通过Pause容器可以使同一个Pod里面的不同容器共享存储,网络,PID,IPC等,容器之间可以使用localhost:port相互访问,可以使用volume等实现数据共享。
根据Docker的构造,Pod可被建模为一组有共享命令空间,卷,IP地址和Port端口的容器
-
为什么要引入Pod
强依赖的服务器要部署在一起,
多个服务需要协同工作,
兼容其他CRI标准的运行时
定义一个pod
[root@k8s-master01 pra]# cat pod.yml
apiVersion: v1 # apiVersion 版本号
kind: Pod # 资源的类型,Deployment,StatefulSet Service
metadata: # 元数据信息
creationTimestamp: null
labels: # 标签
run: nginx #key=value
name: nginx # Pod的名称
spec: # 必选,用于定义pod的详细信息
containers: # 必选,配置容器的地方。
- image: nginx:1.15.12 # 必选,指定容器的镜像
name: nginx #指定容器的名称
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
创建pod:
[root@k8s-master01 pra]# kubectl create -f pod.yml
查看pod状态:
[root@k8s-master01 pra]# kubectl get po nginx
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 3h19m
使用kubectl run 创建一个Pod:
也可以使用kubectl run 创建一个pod,不用配置文件也可以创建,但不推荐使用。
kubectl run nginx-run --image=nginx:1.15.12
1.2更改Pod的启动命令和参数。
[root@k8s-master01 pra]# cat pod.yml
apiVersion: v1 # apiVersion 版本号
kind: Pod # 资源的类型,Deployment,StatefulSet Service
metadata: # 元数据信息
creationTimestamp: null
labels: # 标签
run: nginx #key=value
name: nginx # Pod的名称
spec: # 必选,用于定义pod的详细信息
containers: # 必选,配置容器的地方。
- image: nginx:1.15.12 # 必选,指定容器的镜像
name: nginx #指定容器的名称
command: [ "sleep", "10" ] # entrypoint 让这个容器sleep 10s
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
#command 相当于docker中的entrypoint 覆盖原本的启动命令。
# args相当于覆盖掉cmd,
删掉之前的pod,重新指定新的pod.yml来创建pod
[root@k8s-master01 pra]# kubectl delete -f pod.yml
pod "nginx" deleted
[root@k8s-master01 pra]# kubectl create -f pod.yml
pod/nginx created
[root@k8s-master01 pra]# kubectl get po
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 7s
[root@k8s-master01 pra]# kubectl get po
NAME READY STATUS RESTARTS AGE
nginx 0/1 Completed 0 12s
[root@k8s-master01 pra]# kubectl get po -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 0/1 Completed 1 (24s ago) 35s 172.16.85.200 k8s-node01 <none> <none>
[root@k8s-master01 pra]# curl 172.16.85.220
^C
# 再次查看已经不能访问pod的80端口了,因为我们覆盖了启动命令只执行了sleep命令。没有前台进程。所以目前pod状态是Completed状态。
1.3 Pod状态及Pod故障排查命令
状态 | 说明 |
---|---|
Pending(挂起) | Pod已被Kubernetes系统接收,但仍有一个或多个容器未被创建,可以通过kubectl describe查看处于Pending状态的原因 |
Running (运行中) | Pod已经被绑定到一个节点上,并且所有的容器都已经被创建,而且至少有一个是运行状态,或者是正在启动或者重启,可以通过kubectl logs 查看Pod日志 |
Succeeded(成功) | 所有容器执行成功并种植,并且不会再次重启,可以通过kubectl logs查看Pod日志 |
Failed(失败) | 所有容器都已终止,并且至少有一个容器以失败的方式终止,也就说这个容器要么以非零状态推出,要么被系统终止,可以通过logs和describe查看Pod日志和状态 |
Unkknown(未知) | 通常是由于通信问题造成的无法获得Pod的状态 |
ImagePullBackOff ErrImagePull | 拉取镜像失败,一半是由于镜像不存在,网络不通,或者需要登录认证引起的,可以使用describe命令查看具体原因 |
CrashLoopBackOff | 容器启动失败,可以通过logs命令查看具体原因,一般为启动命令不正确,健康检查不通过等 |
OOMKilled | 容器内存溢出,一般是容器的内存Limit设置的过小,或者程序本身有内存溢出,可以通过logs查看程序的启动日志 |
Terminating | Pod正在被删除,可以通过describe查看状态 |
状态 | 说明 |
---|---|
SystlForbidden | Pod自定义了内核配置,但Kubelet没有添加内核配置或配置内核的参数不支持,可以通过describe查看具体原因。 |
Completed | 容器内部主进程推出,一般计划任务执行结束会显示该状态,此时可以通过log查看容器日志 |
ContainerCreating | Pod正在创建,一般为正在下载镜像,或者有配置不当的地方,可以通过describe查看具体原因 |
注意: Pod的Phase字段只有 Pending,Running,Succeeded,Failed,Unknown,其余的未处于上述状态的原因,可以通过kubectl gett po xxx -o yaml查看
#查看pod日志
[root@k8s-master01 pra]# kubectl get po -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-6d48795585-8dx7k 1/1 Running 1 (18h ago) 6d4h
calico-node-2bg2r 1/1 Running 1 (18h ago) 6d4h
calico-node-gkfgv 1/1 Running 1 (18h ago) 6d4h
calico-node-hdprr 1/1 Running 1 (18h ago) 6d4h
calico-node-rzfls 1/1 Running 1 (18h ago) 6d4h
calico-node-z9n9q 1/1 Running 1 (18h ago) 6d4h
coredns-6554b8b87f-rnj8l 1/1 Running 1 (18h ago) 6d4h
coredns-6554b8b87f-rrln2 1/1 Running 1 (18h ago) 6d4h
etcd-k8s-master01 1/1 Running 1 (18h ago) 6d4h
etcd-k8s-master02 1/1 Running 1 (18h ago) 6d4h
etcd-k8s-master03 1/1 Running 1 (18h ago) 6d4h
kube-apiserver-k8s-master01 1/1 Running 1 (18h ago) 6d4h
kube-apiserver-k8s-master02 1/1 Running 1 (18h ago) 6d4h
kube-apiserver-k8s-master03 1/1 Running 2 (18h ago) 6d4h
kube-controller-manager-k8s-master01 1/1 Running 2 (18h ago) 6d4h
kube-controller-manager-k8s-master02 1/1 Running 1 (18h ago) 6d4h
kube-controller-manager-k8s-master03 1/1 Running 1 (18h ago) 6d4h
kube-proxy-5wfgh 1/1 Running 1 (18h ago) 6d4h
kube-proxy-79lcz 1/1 Running 1 (18h ago) 6d4h
kube-proxy-7l54d 1/1 Running 1 (18h ago) 6d4h
kube-proxy-jg45n 1/1 Running 1 (18h ago) 6d4h
kube-proxy-jqchh 1/1 Running 1 (18h ago) 6d4h
kube-scheduler-k8s-master01 1/1 Running 2 (18h ago) 6d4h
kube-scheduler-k8s-master02 1/1 Running 1 (18h ago) 6d4h
kube-scheduler-k8s-master03 1/1 Running 1 (18h ago) 6d4h
metrics-server-8df99c47f-xjs2p 1/1 Running 2 (18h ago) 6d4h
[root@k8s-master01 pra]# kubectl logs -f calico-node-2bg2r -n kube-system
# -n 指定命名空间
#RESTART 重启数量,数字有没有增加。
1.4 Pod镜像拉取策略
通过spec.containers[].imagePullPolicy参数可以指定镜像的拉取策略,目前支持的策略如下:
操作方式 | 说明 |
---|---|
Lways | 总是拉取,当镜像tag为latest时,且imagePullPolicy未配置,默认为Always |
Never | 不管是否存在都不会拉取 |
IfNotPresent | 镜像不存在时拉取镜像,如果tag为非latest,且imagePullPolicy未配置,默认为IfNotPresent |
[root@k8s-master01 pra]# cat pod.yml
apiVersion: v1 # apiVersion 版本号
kind: Pod # 资源的类型,Deployment,StatefulSet Service
metadata: # 元数据信息
creationTimestamp: null
labels: # 标签
run: nginx #key=value
name: nginx # Pod的名称
spec: # 必选,用于定义pod的详细信息
containers: # 必选,配置容器的地方。
- image: nginx:1.15.12 # 必选,指定容器的镜像
name: nginx #指定容器的名称
command: [ "sleep", "10" ] # entrypoint 让这个容器sleep 10s
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
以这个pod.yml创建pod,查看镜像拉取策略。
[root@k8s-master01 pra]# kubectl create -f pod.yml
pod/nginx created
[root@k8s-master01 pra]# kubectl get po
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 6s
[root@k8s-master01 pra]# kubectl describe po nginx
Name: nginx
Namespace: default
Priority: 0
Service Account: default
Node: k8s-node01/192.168.1.74
Start Time: Wed, 08 May 2024 11:02:14 +0800
Labels: run=nginx
Annotations: cni.projectcalico.org/containerID: 9138dd3df982450b31fb5362bf7da0b0abe631101fb2a5d8139886535c25f065
cni.projectcalico.org/podIP: 172.16.85.201/32
cni.projectcalico.org/podIPs: 172.16.85.201/32
Status: Running
IP: 172.16.85.201
IPs:
IP: 172.16.85.201
Containers:
nginx:
Container ID: containerd://4af21fada1fdc4872ad7ae2efb728937f679af1f069584acf8f30cf5e546b9e2
Image: nginx:1.15.12
Image ID: docker.io/library/nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68
Port: <none>
Host Port: <none>
Command:
sleep
10
State: Running
Started: Wed, 08 May 2024 11:02:26 +0800
Last State: Terminated
Reason: Completed
Exit Code: 0
Started: Wed, 08 May 2024 11:02:15 +0800
Finished: Wed, 08 May 2024 11:02:25 +0800
Ready: True
Restart Count: 1
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-c6pqc (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
kube-api-access-c6pqc:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 20s default-scheduler Successfully assigned default/nginx to k8s-node01
Normal Pulled 8s (x2 over 19s) kubelet Container image "nginx:1.15.12" already present on machine
Normal Created 8s (x2 over 19s) kubelet Created container nginx
Normal Started 8s (x2 over 19s) kubelet Started container nginx
# cotainer image nginx:xx.xx already present on machine 这个镜像一直存在于这个机器上。
# 所以没有再去拉取一遍。
如果我们改掉镜像。改成总是拉取
以下面这个pod.yml创建pod
[root@k8s-master01 pra]# cat pod.yml
apiVersion: v1 # apiVersion 版本号
kind: Pod # 资源的类型,Deployment,StatefulSet Service
metadata: # 元数据信息
creationTimestamp: null
labels: # 标签
run: nginx #key=value
name: nginx # Pod的名称
spec: # 必选,用于定义pod的详细信息
containers: # 必选,配置容器的地方。
- image: nginx:1.15.12 # 必选,指定容器的镜像
name: nginx #指定容器的名称
command: [ "sleep", "10" ] # entrypoint 让这个容器sleep 10s
imagePullPolicy: Always # always总是拉取
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
[root@k8s-master01 pra]# kubectl create pod -f pod.yml
error: Unexpected args: [pod]
See 'kubectl create -h' for help and examples
[root@k8s-master01 pra]# kubectl create -f pod.yml
pod/nginx created
[root@k8s-master01 pra]# kubectl get po
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 5s
[root@k8s-master01 pra]# kubectl describe po nginx
Name: nginx
Namespace: default
Priority: 0
Service Account: default
Node: k8s-node01/192.168.1.74
Start Time: Wed, 08 May 2024 11:09:17 +0800
Labels: run=nginx
Annotations: cni.projectcalico.org/containerID: b39226e0407d1dec56bb0c840162dd405b447762919c002361aca191f7f8848b
cni.projectcalico.org/podIP: 172.16.85.202/32
cni.projectcalico.org/podIPs: 172.16.85.202/32
Status: Running
IP: 172.16.85.202
IPs:
IP: 172.16.85.202
Containers:
nginx:
Container ID: containerd://7d25bff4be2bb63a38a9e46811f692ba2fde05821ef1ba87a2fe36b43dc31908
Image: nginx:1.15.12
Image ID: docker.io/library/nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68
Port: <none>
Host Port: <none>
Command:
sleep
10
State: Terminated
Reason: Completed
Exit Code: 0
Started: Wed, 08 May 2024 11:09:32 +0800
Finished: Wed, 08 May 2024 11:09:42 +0800
Last State: Terminated
Reason: Completed
Exit Code: 0
Started: Wed, 08 May 2024 11:09:20 +0800
Finished: Wed, 08 May 2024 11:09:30 +0800
Ready: False
Restart Count: 1
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-ndjm6 (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
kube-api-access-ndjm6:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 28s default-scheduler Successfully assigned default/nginx to k8s-node01
Normal Pulled 25s kubelet Successfully pulled image "nginx:1.15.12" in 1.877s (1.877s including waiting)
Normal Pulling 15s (x2 over 27s) kubelet Pulling image "nginx:1.15.12"
Normal Created 13s (x2 over 25s) kubelet Created container nginx
Normal Started 13s (x2 over 25s) kubelet Started container nginx
Normal Pulled 13s kubelet Successfully pulled image "nginx:1.15.12" in 1.86s (1.86s including waiting)
Warning BackOff 2s kubelet Back-off restarting failed container nginx in pod nginx_default(7c830800-057a-48ea-aed2-38ab92c407f3)
[root@k8s-master01 pra]#
# Pulling image ngingx:xx.xx 无论有没有都会再次拉取一遍镜像。
1.5 Pod 重启策略
可以使用spec.restartPolicy 指定容器的重启策略
操作方式 | 说明 |
---|---|
Always | 默认策略。容器失效时,自动重启该容器 |
OnFailure | 容器以不为0的状态码终止,自动重启该容器 |
Nerver | 无论何种状态,都不会重启 |
指定重启策略为OnFailure
[root@k8s-master01 pra]# kubectl delete -f pod.yml
pod "nginx" deleted
[root@k8s-master01 pra]# kubectl get po
No resources found in default namespace.
[root@k8s-master01 pra]# vim pod.yml
[root@k8s-master01 pra]# cat pod.yml
apiVersion: v1 # apiVersion 版本号
kind: Pod # 资源的类型,Deployment,StatefulSet Service
metadata: # 元数据信息
creationTimestamp: null
labels: # 标签
run: nginx #key=value
name: nginx # Pod的名称
spec: # 必选,用于定义pod的详细信息
containers: # 必选,配置容器的地方。
- image: nginx:1.15.12 # 必选,指定容器的镜像
name: nginx #指定容器的名称
command: [ "sleep", "10" ] # entrypoint 让这个容器sleep 10s
imagePullPolicy: Always
restartPolicy: OnFailure
[root@k8s-master01 pra]# kubectl create -f pod.yml
pod/nginx created
[root@k8s-master01 pra]# kubectl get po
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 5s
[root@k8s-master01 pra]# kubectl get po
NAME READY STATUS RESTARTS AGE
nginx 0/1 Completed 0 2m39s
# 等待一会发现不会再重启容器,OnFailure,容器以不为0的状态码终止,才会自动重启该容器。
# 举例说明如何才是
1.6 Pod的三种探针
种类 | 说明 |
---|---|
startupProbe | Kubeternets1.16新加的探测方式,用于判断容器内的应用程序是否已经启动。如果配置了startupProbe,就会先禁用其他探测,直到它成功位置。如果探测失败,Kubelet会杀死容器,之后根据重启策略进行处理,如果探测成功,或没有配置startupprobe,则状态为成功,之后就不在探测。 |
livenessProbe | 用于探测容器是否在运行,如果探测失败,kubelet会’杀死’容器并根据重启策略进行相应的处理。如果未指定该探针,将默认未Success |
readinessProbe | 一般用于探测容器内的程序是否健康,及判断容器是否为就绪(Ready)状态。如果是,则可以处理请求,反之Endpoints Controller将从所有的Service的Endpoints中删除此容器所在的Pod的IP地址。如果未指定,将默认Success |
1.7 Pod探针的实现方式
实现方式 | 说明 |
---|---|
ExecAction | 在容器内执行一个指定的命令,如果命令返回值为0,则认为容器健康 |
TCPSocketAction | 通过TCP连接检查容器指定的端口,如果端口开放,则认为容器健康 |
HTTPGetAction | 对指定的URL进行Get请求,如果状态码在200-400之间,则认为容器健康 |
1.8 livenessProbe和readinessProbe
创建一个没有探针的Pod
未添加健康检查的pod
[root@k8s-master01 pra]# cat pod.yml
apiVersion: v1 # apiVersion 版本号
kind: Pod # 资源的类型,Deployment,StatefulSet Service
metadata: # 元数据信息
creationTimestamp: null
labels: # 标签
run: nginx #key=value
name: nginx # Pod的名称
spec: # 必选,用于定义pod的详细信息
containers: # 必选,配置容器的地方。
- image: nginx:1.15.12 # 必选,指定容器的镜像
name: nginx #指定容器的名称
command: # [ "1", "2", "3"]
- sh
- -c
- sleep 10; nginx -g "daemon off;"
restartPolicy: OnFailure
[root@k8s-master01 pra]# kubectl delete -f pod.yml
pod "nginx" deleted
[root@k8s-master01 pra]# kubectl get pod
No resources found in default namespace.
[root@k8s-master01 pra]# kubectl create -f pod.yml
[root@k8s-master01 pra]# kubectl get po -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 0 39s 172.16.85.204 k8s-node01 <none> <none>
[root@k8s-master01 pra]# curl 172.16.85.204
curl:(7) Failed connect to 172.16.85.204:80; Connection refused
#上面这个pod,没有添加健康检查,刚启动status状态就已经是running状态了。这个状态属于成功,已经开始分配流量,但实际未启动成功。curl是不通的。就会有报错产生。这个操作非常危险。所以健康检查非常有必要。
配置健康检查
[root@k8s-master01 pra]# cat pod.yml
apiVersion: v1 # apiVersion 版本号
kind: Pod # 资源的类型,Deployment,StatefulSet Service
metadata: # 元数据信息
name: nginx # Pod的名称
spec: # 必选,用于定义pod的详细信息
containers: # 必选,配置容器列表
- image: nginx # 必选,指定容器的镜像
name: nginx #指定容器的名称 #符合RFC 1035规范的容器名称
command: # 可选,容器启动执行的命令
- sh
- -c
- sleep 10, nginx-g "daemon off;"
readinessProbe: # 可选,健康检查。注意三种检查方式只能使用一种。 #就绪探针,如果失败会切断流量
httpGet: # 接口检查方式
path: /index.html #检查路径
port: 80
scheme: HTTP # HTTP or HTTPS
#httpHeaders # 可选,检查请求头
#- name: end-user
#value: Jason
initialDelaySeconds: 2 # 初始化时间,健康检查延迟时间
timeoutSeconds: 2 # 超时时间
periodSeconds: 5 # 检查间隔
successThreshold: 1 # 检查成功为1次表示就绪
failureThreshold: 2 # 检查失败2次表示未就绪
livenessProbe: # 可选,健康检查 #存活探针,如果失败会重启pod
tcpSocket: # 端口检查方式
port: 80
initialDelaySeconds: 2 #初始化时间
timeoutSeconds: 2 # 超时时间
periodSeconds: 5 # 检测间隔
successThreshold: 1 # 检查成功为1次表示就绪
failureThreshold: 2 # 检测失败2次表示未就绪
ports: # 可选,容器需要暴漏的端口号列表
- containerPort: 80
restartPolicy: Never
1.9 配置StartupProbe
[root@k8s-master01 pra]# vim pod.yml_1
[root@k8s-master01 pra]# cat pod.yml_1
apiVersion: v1 # apiVersion 版本号
kind: Pod # 资源的类型,Deployment,StatefulSet Service
metadata: # 元数据信息
name: nginx # Pod的名称
spec: # 必选,用于定义pod的详细信息
containers: # 必选,配置容器的地方。
- image: nginx # 必选,指定容器的镜像
name: nginx #指定容器的名称
startupProbe:
tcpSocket: # 端口检查方式
port: 80
initialDelaySeconds: 20 #初始化时间
timeoutSeconds: 2 # 超时时间
periodSeconds: 5 # 检测间隔
successThreshold: 1 # 检查成功为1次表示就绪
failureThreshold: 20 #
readinessProbe: # 可选,健康检查。注意三种检查方式只能使用一种。 #就绪探针,如果失败会切断流量
httpGet: # 接口检查方式
path: /index.html #检查路径
port: 80
scheme: HTTP # HTTP or HTTPS
#httpHeaders # 可选,检查请求头
#- name: end-user
#value: Jason
initialDelaySeconds: 2 # 初始化时间,健康检查延迟时间
timeoutSeconds: 2 # 超时时间
periodSeconds: 5 # 检查间隔
successThreshold: 1 # 检查成功为1次表示就绪
failureThreshold: 2 # 检查失败2次表示未就绪
livenessProbe: # 可选,健康检查 #存活探针,如果失败会重启pod
tcpSocket: # 端口检查方式
port: 80
initialDelaySeconds: 2 #初始化时间
timeoutSeconds: 2 # 超时时间
periodSeconds: 5 # 检测间隔
successThreshold: 1 # 检查成功为1次表示就绪
failureThreshold: 2 # 检测失败2次表示未就绪
command: # [ "1", "2", "3"]
- sh
- -c
- sleep 30; nginx -g "daemon off;"
1.10 gRPC 探针
gRPC是属于第四种探针。从1.24版本后默认开启
[root@k8s-master01 pra]# cat pod.yml
apiVersion: v1 # apiVersion 版本号
kind: Pod # 资源的类型,Deployment,StatefulSet Service
metadata: # 元数据信息
name: etcd # Pod的名称
spec: # 必选,用于定义pod的详细信息
containers: # 必选,配置容器的地方。
- image: registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.1-0 # 必选,指定容器的镜像
name: etcd #指定容器的名称
command: [ "/usr/local/bin/etcd", "--data-dir", "/var/lib/etcd", "--listen-client-urls", "http://0.0.0.0:2379", "--advertise-client-urls", "http://127.0.0.1:2379", "--log-level", "debug" ]
readinessProbe: # 可选,健康检查。注意三种检查方式只能使用一种。 #就绪探针,如果失败会切断流量
grpc:
port: 2379
initialDelaySeconds: 2 # 初始化时间,健康检查延迟时间
timeoutSeconds: 2 # 超时时间
periodSeconds: 5 # 检查间隔
successThreshold: 1 # 检查成功为1次表示就绪
failureThreshold: 2 # 检查失败2次表示未就绪
livenessProbe: # 可选,健康检查 #存活探针,如果失败会重启pod
grpc:
port: 2379
initialDelaySeconds: 2 #初始化时间
timeoutSeconds: 2 # 超时时间
periodSeconds: 5 # 检测间隔
successThreshold: 1 # 检查成功为1次表示就绪
failureThreshold: 2 # 检测失败2次表示未就绪
[root@k8s-master01 pra]#
更多推荐
所有评论(0)