我有一个deployment.yaml,它在容器上有一个就绪探测器。(就绪性探测将在此处失败)
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: nginx
name: my-nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
readinessProbe:
exec:
command:
- cat
- /server/xyz.txt
initialDelaySeconds: 50
periodSeconds: 10
resources: {}
status: {}部署中的pods使用ClusterIP类型的服务提供服务。
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: nginx-service
name: nginx-service
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 80
selector:
app: nginx
type: ClusterIP
status:
loadBalancer: {}在使用kubectl apply应用这些yamls之后,pod中的容器永远不会准备就绪,因为就绪探测正在失败,这是意料之中的。
NAME READY STATUS RESTARTS AGE
my-nginx-deployment-6b788b89c6-f69j7 0/1 Running 0 9m50s
my-nginx-deployment-6b788b89c6-m5qf6 0/1 Running 0 9m50s因此,由于这些pod还没有准备好,所以它们不应该服务于流量,但当我这样做时
kubectl port-forward services/nginx-service 8086:8080我能够在http://127.0.0.1:8086/上得到200个响应和nginx主页,我还可以看到关于服务流量的pod日志。
问题是,当就绪探测失败时,为什么pods要为流量提供服务。
PS:我已经使用Kind在我的机器上创建了集群
发布于 2021-05-14 23:44:30
port-forward api用于Pod。kubectl port-forward命令只是使用服务来使其易于使用,但您的端口实际上被转发到Pod -因此就绪状态不适用。
https://stackoverflow.com/questions/67536416
复制相似问题