以下 Pod 定义 成功 执行一个
readinessProbe
,它向连接到同一集群上的 Pod 的服务 service-am-i-ready
发出请求。
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: ready-if-service-ready
name: ready-if-service-ready
spec:
containers:
- image: nginx:1.16.1-alpine
name: ready-if-service-ready
resources: {}
livenessProbe:
exec:
command:
- 'true'
readinessProbe:
exec:
command:
- sh
- -c
- 'wget -T2 -O- http://service-am-i-ready:80'
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
但是,如果我将
readinessProbe.exec.command
更改为 readinessProbe.httpGet
它就不再起作用了:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: ready-if-service-ready
name: ready-if-service-ready
spec:
containers:
- image: nginx:1.16.1-alpine
name: ready-if-service-ready
resources: {}
livenessProbe:
exec:
command:
- 'true'
readinessProbe:
httpGet: # Only changed this method
host: service-am-i-ready
path: /
port: 80
scheme: HTTP
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
这是我运行的错误消息
kubectl po describe ready-if-service-ready
:
Warning Unhealty 3m10s (x139 over 23m) kubelet Readiness probe failed: Get "http://service-am-i-ready:80/": dial tcp: lookup service-am-i-ready: no such host
运行
kubectl get po ready-if-service-ready
给出:
NAME READY STATUS RESTARTS AGE
ready-if-service-ready 0/1 Running 0 27m
为什么第一个 readinessProbe 能用,第二个不行?看起来第二个 readinessProbe 向与
wget -T2 -O- http://service-am-i-ready:80
命令相同的端点发出请求。