AKS部署Kubernetes分层命名空间遇端点不可用及kubectl hnc命令问题
解决AKS中HNC v1.1.0的webhook访问及kubectl命令问题
1. 修复kubectl hnc命令不存在的问题
HNC的控制器安装包(default.yaml)仅部署集群内控制器组件,不包含kubectl命令行插件,需单独安装:
- 下载对应平台的v1.1.0版本插件:
# Linux amd64示例 curl -L https://github.com/kubernetes-sigs/hierarchical-namespaces/releases/download/v1.1.0/hnc_linux_amd64.tar.gz | tar xvz # macOS amd64示例 # curl -L https://github.com/kubernetes-sigs/hierarchical-namespaces/releases/download/v1.1.0/hnc_darwin_amd64.tar.gz | tar xvz # Windows需手动下载解压:https://github.com/kubernetes-sigs/hierarchical-namespaces/releases/download/v1.1.0/hnc_windows_amd64.zip - 将解压后的
hnc二进制文件移动到系统PATH目录:sudo mv hnc /usr/local/bin/ - 验证安装:
kubectl hnc version
注:你遇到的
unknown command "hns"应为输入笔误,正确命令为kubectl hnc
2. 修复webhook端点访问失败问题
AKS集群内部服务访问必须使用完整FQDN(带.cluster.local后缀),需修改HNC的webhook配置:
方法一:在线修改现有webhook配置
编辑验证Webhook配置
kubectl edit validatingwebhookconfigurations hnc-validating-webhook-configuration
找到所有clientConfig.url字段,将原有地址(如https://hnc-webhook-service.hnc-system.svc:443/validate-v1-namespace)修改为带后缀的完整地址:
https://hnc-webhook-service.hnc-system.svc.cluster.local:443/validate-v1-namespace
保存并退出编辑。
编辑突变Webhook配置
kubectl edit mutatingwebhookconfigurations hnc-mutating-webhook-configuration
重复上述修改,将所有clientConfig.url中的服务地址添加.cluster.local后缀,保存退出。
重启HNC控制器
kubectl rollout restart deployment/hnc-controller-manager -n hnc-system
方法二:修改原始manifest后重新安装
如果不想手动编辑配置,可直接修改manifest中的服务地址后重新部署:
curl -L https://github.com/kubernetes-sigs/hierarchical-namespaces/releases/download/v1.1.0/default.yaml | sed 's/hnc-webhook-service.hnc-system.svc/hnc-webhook-service.hnc-system.svc.cluster.local/g' | kubectl apply -f -
3. 验证修复效果
- 查看控制器日志,确认无webhook调用错误:
kubectl logs deployment/hnc-controller-manager -n hnc-system -f - 测试HNC分层功能:
# 创建父命名空间 kubectl create ns parent-ns # 创建子命名空间并关联父命名空间 kubectl hnc create child-ns --parent parent-ns # 验证层级关系 kubectl hnc tree parent-ns
内容的提问来源于stack exchange,提问作者Lion
相关产品推荐
相关产品推荐

