首页 文章

kubectl通过负载均衡器

提问于
浏览
0

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

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

Steps:

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 回答

  • 0

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

    proxy_pass 127.0.0.1:8001;

    并在load-balancer实例中运行:

    kubectl代理 .

    然后它工作 .

  • 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
       }
    }
    
  • 0

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

相关问题