无法解决 GKE 集群中托管于端口 3310、7357 的 clamAV:1.2 部署的运行状况检查相关问题。
我已经通过 部署文件在 GKE 集群中部署了 clamAV:1.2 docker 镜像。
apiVersion: apps/v1
kind: Deployment
metadata:
name: clam-av
spec:
replicas: 1
selector:
matchLabels:
run: clam-av
template:
metadata:
labels:
run: clam-av
spec:
nodeSelector:
cloud.google.com/gke-nodepool: XXX-XXX-pool
terminationGracePeriodSeconds: 60
containers:
- name: clamav-container
image: clamav/clamav:1.2
resources:
requests:
cpu: 200m
memory: 1Gi
imagePullPolicy: Always
ports:
- containerPort: 3310
# - containerPort: 7357
为此部署创建了服务文件:
apiVersion: v1
kind: Service
metadata:
name: clam-av-service
annotations:
cloud.google.com/backend-config: '{"default": "backend-for-clamAV"}'
spec:
selector:
run: clam-av
ports:
- name: http3310
protocol: TCP
port: 80
targetPort: 3310
# - name: http7357
# protocol: TCP
# port: 80
# targetPort: 7357
type: ClusterIP
还创建了一个BackendConfig:
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
name: backend-for-clamAV
spec:
timeoutSec: 150
connectionDraining:
drainingTimeoutSec: 150
healthCheck:
checkIntervalSec: 15
port: 80
type: HTTP
requestPath: /
healthyThreshold: 1
unhealthyThreshold: 3
timeoutSec: 15
尝试将spec.healthcheck.type设置为TCP,因为clamAV 3310是TCP连接。但 GCP 入口不支持 TCP。
任何解决此问题的建议将不胜感激。谢谢你!
错误消息是
Some backend services are in UNHEALTHY
状态,表明只有少数后端受到影响,而不是 all backend services are in UNHEALTHY state.
尝试以下故障排除步骤来解决问题
检查所有 Pod 是否正在运行,Pod 中的所有容器均已准备就绪且 Pod 状态为“正在运行”。使用以下命令。
$ kubectl 获取 po -n
使用以下命令检查可疑 Pod 的日志:
$ kubectl 日志
一般来说,您应该检查指向负载均衡器的所有 Pod。
确认 livenessProbe 和 readinessProbe 是否配置正确且响应为 200。
如文档中所述:
目前,所有服务后端必须满足以下任一要求才能通过 GCE 负载均衡器发送给它的 HTTP 健康检查: 1. 在“/”上响应 200。内容并不重要。 2. 在支持服务的 Pod 上公开任意 URL 作为就绪探针。
确保 readinessProbe 指向您向 Ingress 公开的同一端口。
描述您的入口 $ kubectl 描述入口
通过运行命令
netstat -tnl \| grep 80
检查服务是否正确侦听端口 80。
检查后端服务的健康检查日志,这将返回有助于进一步调试的响应代码。