我正在尝试通过GKE部署应用程序。到目前为止,我为App的正面和背面创建了两个服务和两个部署。 我使用“ gce”控制器创建了一个入口资源,并按所示映射了服务
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
labels:
app: app
part: ingress
name: my-irool-ingress
annotations:
kubernetes.io/ingress.class: "gce"
kubernetes.io/ingress.global-static-ip-name: my-ip
spec:
backend:
serviceName: client-svc
servicePort: 3000
rules:
- http:
paths:
- path: /back
backend:
serviceName: back-svc
servicePort: 9000
- http:
paths:
- path: /back/*
backend:
serviceName: back-svc
servicePort: 9000
它几乎可以正常工作(不是所有的根都正确映射,但是它可以工作)。我在代码(仅是应用程序的代码)上添加了修改,并且重建了图像并重新创建了服务,但是入口似乎对我添加的修改和
感到愤怒我所有的服务都变得不健康
这是前台服务
apiVersion: v1
kind: Service
metadata:
labels:
app: app
part: front
name: client
namespace: default
spec:
type: NodePort
ports:
- nodePort: 32585
port: 3000
protocol: TCP
selector:
app: app
part: front
当我进行描述时,除了我的服务不健康之外,我一无所获。 在创建的那一刻,我不断获得
警告GCE 6m负载均衡器-控制器 googleapi:错误409:资源 '[project / idproject] / global / healthChecks / k8s-be-32585--17c7 ...... 01' 已经存在,已经存在
我的问题是:
上面显示的代码有什么问题?
readinessProbe和livenessProbe是什么?我应该添加它们还是将一个映射到默认后端的服务就足够了?
答案 0 :(得分:0)
对于第一个问题,deleting and re-creating the ingress可以解决问题。对于第二个问题,您可以查看配置“活动和就绪”探针here的完整步骤。此外,按照here的定义(以广告连播的示例为例):
livenessProbe:指示容器是否正在运行。如果 活度探测失败,kubelet杀死了Container,并且 容器受其重新启动策略约束。如果容器没有 提供活动性探针,默认状态为“成功”。
和readinessProbe:指示容器是否准备好 服务请求。如果就绪探针失败,则端点 控制器从所有端点删除Pod的IP地址 与Pod相匹配的服务。之前的默认准备状态 初始延迟为“失败”。如果容器不准备就绪 探针,默认状态为“成功”。