Knative-Serving Activator Pod CrashLoopBackOff问题排查求助
环境与安装步骤
- 服务器系统:Ubuntu 22.04.2 LTS
- Kubernetes集群初始化命令:
sudo kubeadm init --cri-socket=/var/run/cri-dockerd.sock --pod-network-cidr=192.168.0.0/16 - 组件安装命令:
Calico 安装
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.3/manifests/tigera-operator.yaml kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.3/manifests/custom-resources.yaml kubectl taint nodes --all node-role.kubernetes.io/control-plane-Knative Serving 安装
kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.11.2/serving-crds.yaml kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.11.2/serving-core.yamlIstio 安装(适配Knative)
kubectl apply -l knative.dev/crd-install=true -f https://github.com/knative/net-istio/releases/download/knative-v1.11.1/istio.yaml kubectl apply -f https://github.com/knative/net-istio/releases/download/knative-v1.11.1/istio.yaml kubectl apply -f https://github.com/knative/net-istio/releases/download/knative-v1.11.1/net-istio.yaml kubectl patch svc istio-ingressgateway -n istio-system -p '{"spec": {"type": "LoadBalancer", "externalIPs":["<server ip>"]}}' kubectl label namespace default istio-injection=enabled
问题现象
执行kubectl get pods -n knative-serving输出:
NAME READY STATUS RESTARTS AGE activator-5ccbd798b6-rkn5v 0/1 CrashLoopBackOff 440 (4m50s ago) 40h autoscaler-848d88dbb-64btf 1/1 Running 0 40h controller-856747f668-wtwfp 1/1 Running 0 40h webhook-55cff8d4f9-79lsl 1/1 Running 0 40h
通过kubectl describe pod activator -n knative-serving确认:
- 就绪探针失败,返回状态码500
- Pod重启次数达424次,事件显示持续重启失败容器
已尝试动作
- 通过Lens修改activator pod的CPU和内存限制,未解决问题
- 该问题在Minikube环境中不存在
排查与解决建议
获取Activator Pod详细日志
执行命令查看Pod启动失败的具体错误信息,重点关注探针失败、网络连接、配置加载相关日志:kubectl logs activator-5ccbd798b6-rkn5v -n knative-serving --previous修复版本兼容性问题
当前Knative Serving使用v1.11.2,而适配的Istio组件用的是v1.11.1,版本不匹配可能引发兼容性问题。建议将Istio相关组件升级到与Knative Serving一致的v1.11.2版本。检查Calico网络策略
确认Calico是否存在限制Knative Serving命名空间网络访问的策略:kubectl get networkpolicies -n knative-serving若存在严格策略,需确保Activator Pod能正常访问Kubernetes API、Istio控制平面等集群内部服务。
调整Activator探针配置
查看Knative Serving的Activator配置,尝试调整就绪探针的启动延迟或失败阈值,给Pod更多初始化时间:kubectl get configmap config-activator -n knative-serving -o yaml修改后重启Activator Deployment:
kubectl rollout restart deployment activator -n knative-serving验证Knative Serving命名空间的Istio注入
确认Knative Serving命名空间是否开启Istio自动注入:kubectl get namespace knative-serving --show-labels若未标注
istio-injection=enabled,执行命令添加标签并重启Pod:kubectl label namespace knative-serving istio-injection=enabled kubectl rollout restart deployment activator -n knative-serving检查节点资源状态
确认节点是否存在CPU、内存资源不足的情况:kubectl describe node <node-name>若节点资源紧张,需调整节点资源分配或扩容节点。
内容的提问来源于stack exchange,提问作者Dmitry Mustache

