如何在现有GKE Autopilot 1.27.3-gke.100集群启用allow-net-admin安装Istio
在现有GKE Autopilot集群(1.27.3-gke.100)中启用allow-net-admin策略以安装Istio
问题背景
持有版本为1.27.3-gke.100的GKE Autopilot集群,集群创建时未指定--workload-policies=allow-net-admin参数,需在现有集群上启用该策略以满足Istio服务网格所需的NET_ADMIN权限,完成Istio的正常部署。
已执行步骤及已解决问题
- 本地下载istioctl工具
- 执行
istioctl install -y安装Istio核心组件 - 执行
kubectl apply -f samples/addons部署Istio附加组件 - 已修复Istio Sidecar注入后流量丢失问题:通过更新防火墙规则
gcloud compute firewall-rules update <cluster> --allow tcp:10250,tcp:443,tcp:15017解决
当前报错
新部署无法创建资源,ReplicaSet抛出如下权限拒绝错误:
Warning FailedCreate 6s (x17 over 5m36s) replicaset-controller Error creating: admission webhook "warden-validating.common-webhooks.networking.gke.io" denied the request: GKE Warden rejected the request because it violates one or more constraints. Violations details: {"[denied by autogke-default-linux-capabilities]":["linux capability 'NET_ADMIN' on container 'istio-init' not allowed; Autopilot only allows the capabilities: 'AUDIT_WRITE,CHOWN,DAC_OVERRIDE,FOWNER,FSETID,KILL,MKNOD,NET_BIND_SERVICE,NET_RAW,SETFCAP,SETGID,SETPCAP,SETUID,SYS_CHROOT,SYS_PTRACE'."]} Requested by user: 'system:serviceaccount:kube-system:replicaset-controller', groups: 'system:serviceaccounts,system:serviceaccounts:kube-system,system:authenticated'.
解决方案
针对1.27及以上版本的现有GKE Autopilot集群,可直接通过gcloud命令更新集群配置启用allow-net-admin策略,无需重新创建集群:
更新集群workload-policies参数
执行以下命令(替换CLUSTER_NAME和REGION为你的集群名称与所在区域):gcloud container clusters update CLUSTER_NAME \ --region REGION \ --workload-policies=allow-net-admin验证策略生效状态
等待集群更新完成(通常需数分钟),执行以下命令查看集群配置,确认workloadPolicies字段包含allow-net-admin:gcloud container clusters describe CLUSTER_NAME --region REGION | grep -A 5 workloadPolicies重新部署失败资源
集群配置更新完成后,删除之前失败的ReplicaSet或重新部署应用,Istio的istio-init容器将能够获取NET_ADMIN权限,完成Sidecar注入流程。
内容的提问来源于stack exchange,提问作者Miquel puig mena
相关产品推荐
相关产品推荐

