我的情况是,一个服务没有可用的端点。为了测试这一点,我特制了一个yaml描述符,它使用一个简单的节点服务器来设置和检索pod的就绪/活动状态:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nodejs-deployment
labels:
app: nodejs
spec:
replicas: 3
selector:
matchLabels:
app: nodejs
template:
metadata:
labels:
app: nodejs
spec:
containers:
- name: nodejs
image: nodejs_server
ports:
- containerPort: 8080
livenessProbe:
httpGet:
path: /is_alive
port: 8080
initialDelaySeconds: 5
timeoutSeconds: 3
periodSeconds: 10
readinessProbe:
httpGet:
path: /is_ready
port: 8080
initialDelaySeconds: 5
timeoutSeconds: 3
periodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
name: nodejs-service
labels:
app: nodejs
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: nodejs
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nodejs-ingress
spec:
backend:
serviceName: nodejs-service
servicePort: 80
节点服务器具有设置和检索活动性和就绪性的方法。
当应用程序启动时,我可以看到创建了3个副本,它们的状态已就绪。好的,现在我手动触发它们的就绪状态,将其设置为false[从入口外部]。一个pod已从端点正确移除,因此没有流量路由到它[这是正常的,因为这是预期的行为]。当我将所有POD的所有就绪状态设置为false时,端点列表为空[仍然是预期的行为]。
此时,我无法从入口外部设置ready=true,因为流量没有路由到任何pod。例如,当n计时器或n秒后未达到就绪状态时,是否有办法触发pod重启?或者当端点列表为空时?