kubectl通过负载均衡器

时间:2018-05-17 12:31:13

标签: kubernetes load-balancing kubectl

流量:
带有api服务器的kubernetes集群(https://192.168.0.10:6443)< - >负载平衡器(10.10.0.2)< - >笔记本电脑。


从我的笔记本电脑我想运行kubectl指向负载均衡器,其中reveres代理将重定向到api服务器。

步骤:
- 我将kubeconfig(在我的笔记本电脑上)文件中的服务器IP更改为LB的IP:
https://192.168.0.10:6443http://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获取节点我希望得到节点列表,但它不起作用:

  

错误:您必须登录服务器(未授权)

$ curl http://10.10.0.2:8080/
{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {

  },
  "status": "Failure",
  "message": "Unauthorized",
  "reason": "Unauthorized",
  "code": 401

如果我添加到nginx config:

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 个答案:

答案 0 :(得分:0)

其中一个解决方案是添加到nginx配置文件:

  

proxy_pass 127.0.0.1:8001;

并在load-balancer实例中运行:

  

kubectl代理。

然后它有效。

答案 1 :(得分:0)

  

从我的笔记本电脑上我想运行指向负载均衡器的kubectl,其中尊重代理会将我重定向到api服务器。

  • 这就是我们为外部访问配置这种负载均衡器的方法。请注意,您需要某种ssl证书才能使用ssl all-accross。我们确实为my-domain.com(即kubernetes.my-domain.com)提供了适当的证书,但您可能需要根据实际的ip / dns名称进行自签名试验。另请注意,kubernetes是我们群集的名称,因此如果您的名称不同,您还必须更新上游引用。

    upstream kube {
       server kubernetes:443;
    }
    
    server {
       listen 80;
       server_name kubernetes.my-domain.com;
       root /nowhere;
       rewrite ^ https://kubernetes.my-domain.com$request_uri permanent;
     }
    
    server {
       listen 443 ssl;
       server_name kubernetes.my-domain.com;
    
       ssl_certificate      /etc/nginx/ssl/kubernetes.my-domain.com.crt;
       ssl_certificate_key  /etc/nginx/ssl/kubernetes.my-domain.com.key;
    
       location / {
         proxy_set_header        Host $host:$server_port;
         proxy_set_header        X-Real-IP $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header        X-Forwarded-Proto $scheme;
         proxy_redirect http:// https://;
         proxy_pass              https://kube;
         # Required for new HTTP-based CLI
         proxy_http_version 1.1;
         proxy_request_buffering off;
         proxy_buffering off; # Required for HTTP-based CLI to work over SSL
       }
    }
    

答案 2 :(得分:0)

将10.10.0.2放入' alt_name' openssl.cnf的一部分并重建您的apiserver密钥对,然后apiserver会将对10.10.0.2的查询视为有效。