Flow:
带有api服务器的kubernetes集群(https://192.168.0.10:6443)< - >负载均衡器(10.10.0.2)< - >笔记本电脑 .
Idea:
从我的笔记本电脑我想运行kubectl指向负载均衡器,其中reveres代理将重定向到api服务器 .
Steps:
- 我将kubeconfig(在我的笔记本电脑上)文件中的服务器IP更改为LB的IP:
是https://192.168.0.10:6443是http://10.10.0.2:8080/ - 我这样配置了nginx:
server {
listen 8080 default_server;
listen [::]:8080 default_server;
server_name _;
location / {
proxy_pass https://192.168.0.10:6443;
}
}
现在运行例如 kubectl get nodes 我希望得到节点列表,但它不起作用:
错误:您必须登录服务器(未经授权)
$ curl http://10.10.0.2:8080/
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {
},
"status": "Failure",
"message": "Unauthorized",
"reason": "Unauthorized",
"code": 401
如果我添加到nginx配置:
ssl on;
ssl_certificate /root/certs/admin-k-master-1.pem;
ssl_certificate_key /root/certs/admin-k-master-1-key.pem;
并将kubeconfig文件服务器IP更改为 https://10.10.0.2:8080/
$ kubect get nodes
Unable to connect to the server: x509: certificate is valid for 192.168.0.10 not 10.10.0.2
有类似topic但它与kubectl无关 .
我怎样才能做到这一点?或者我做错了什么 .
3 回答
其中一个解决方案是添加到nginx配置文件:
并在load-balancer实例中运行:
然后它工作 .
kubernetes
是我们群集的名称,因此如果您的名称不同,您还必须更新上游引用 .将10.10.0.2放入openssl.cnf的'alt_name'部分并重建您的apiserver密钥对,然后apiserver会将对10.10.0.2的查询视为有效 .