如何禁用Kubernetes API Server的TLS证书与认证?附当前配置
禁用Kubernetes API Server的TLS证书与认证
首先得跟你提一句——强烈不建议在生产环境里这么干!禁用TLS认证意味着所有API通信都是明文传输,随便抓个包就能拿到敏感数据,中间人攻击也能轻易得手,风险拉满。这种操作也就适合测试环境临时调试用用。
基于你给出的kube-apiserver配置,我帮你梳理下需要调整的地方:
具体配置修改步骤
启用非安全端口
你已经设置了--insecure-bind-address=127.0.0.1(限制本地访问,这点做得还不错),但默认非安全端口(通常是8080)是关闭的,得显式打开它:- --insecure-port=8080要是你需要外部机器也能访问,把
--insecure-bind-address改成0.0.0.0就行,但这会让风险进一步放大,谨慎操作。清理所有TLS相关参数
- 把etcd的连接从HTTPS改成HTTP,原来的
--etcd-servers=https://172.16.1.7:2379要换成:- --etcd-servers=http://172.16.1.7:2379 - 删掉etcd的TLS证书配置,比如你写的
--etcd-cafile=/etc/etcd...,如果还有--etcd-cert-file、--etcd-key-file这类参数也一并删掉。 - 要是你的配置里还有API Server自身的TLS证书参数(比如
--tls-cert-file、--tls-private-key-file、--client-ca-file),也必须全部移除——这些是开启HTTPS认证的核心配置,留着的话TLS还是会生效。
- 把etcd的连接从HTTPS改成HTTP,原来的
修改后的完整配置参考
apiVersion: v1 kind: Pod metadata: name: kube-apiserver namespace: kube-system spec: hostNetwork: true containers: - name: kube-apiserver image: "bcmt-registry:5000/gcr.io/google-containers/kube-apiserver-amd64:v1.9.2" command: - /usr/local/bin/kube-apiserver - --insecure-bind-address=127.0.0.1 - --insecure-port=8080 - --apiserver-count=1 - --etcd-servers=http://172.16.1.7:2379
验证是否生效
改完配置后重启kube-apiserver Pod,然后在本地跑个命令测试:
curl http://127.0.0.1:8080/api/v1/nodes
要是能正常返回节点的JSON数据,说明配置已经生效了。
内容的提问来源于stack exchange,提问作者MelDev
相关产品推荐
相关产品推荐

