可锐资源网

技术资源分享平台,提供编程学习、网站建设、脚本开发教程

终于搞定,通过代理访问K8S接口API

在某些特定的场景下,进入服务器访问Kubectl命令确实不太方便

  • 于是乎,本人通过亲自实践搞到了本地客户端通过代理访问k8s命令

踩坑:http代理七层协议访问

  • 第一感觉是使用http代理,原因是我看一~/.kube/config是https://******:6443

接下来对nginx进行配置,一顿操作猛如虎。。。

    server {
        listen       80; # 监听80端口
        server_name  k8s.prod.abc.com;  # 指定域名,本地得配置host,因为没有域名解析

        location /api/ {
            set $cmpassport_addr https://192.168.3.2:6443/;  # 实际k8s接口服务地址
            proxy_pass $cmpassport_addr;
        }
    }

配置完成后,当然重启是nginx

nginx -s reload

不错,没有报错。哈哈。。此时此刻心情极佳。。。

接下来当然是配置本地的k8s配置

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFEREFwcmRXSmwKY201bGRHVnpNQjRYRFRJeU1USXdNakF6TURZMU5Wb1hEVE15TVRFeU9UQXpNRFkxTlZvd0ZURVRNQkVHQTFVRQpBd3dLYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3VkClFhZ05BTGtTQ2FUbkVnMVU5SDBDNCtqSWJIRHE4S1hod1RieVVUcFYrbjBDTDNST1oyTis0OS8vK2g5TEs1Mm8KVjlXSnVacTFMbjNITk1LZWdRUHdFa3QzejJVT0RhcWsydG5QQ0hGUzI3WVNLZXJ4OWxrTVd0NnVVZ0tTVmNmVQpocGp2SmhYMVpWWTQ0TDgzMmZkUlIxMDg5WkNrNEwwWmJVRDR4WUdHaUdKUjJ2MjVheTAycHR1czl4T0JIZ2UzCklweVRFQmw4eWRtdTJGQkZWcWFhWUJvc3B5cnZ4OE1ZTmM0U1N1RUcySm1JOE8zbXdNWFhFYXVmcCtEaXZ6a1EKdk5HWWFkMmR1MlNRcU1YN1BqLzVrc01BV0V1aEljVndiMU9aR0ZyNFoveGJtRU1sWGNkMWdGYlFQajE2bCsyawpQMHROTGJ6L2xHMTNWOEcxRnhNQ0F3RUFBYU1qTUNFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0JnTlZIUThCCkFmOEVCQU1DQXFRd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFPZGMyRStCTmtCK2wrZHNMdDlQbUs4eVVObUgKMkd5bVRmOVM2R0tVOWoybW5UcmY0aXcvSkFUeTYzbk9ZMC80SUE0NGRIRHpnNThWT1I3OE9Wa3NTNDJYeVYxMwp5VTNncjdVdDJrUzBHbFBTYVcrRHk0VVJoN1NsU3NZZ0hYVStZWjNzWVdkejFYUTY2ZVo3WDdlZGcwbHluZ0xOCjJ6alpFcW1wRHJ3UUpPOHFYMmJPSFU0WnVTVEtEdWJMSjF6dHNUNHdVdCsrd3ZXZEJxbnZ0K0czbit6YkpwVXAKUW14NTZOYnhSb0tzOGFSb2lLWWYwTzdxQ1MyOWIwNHJBbkhwWDR6c0xacGJHR3dVMjFiSWgyR2xBa1l5M1R3KwpxaE00K3p0bG9hMkFZZzg3RStYSmlpcnFQZkIwa2hyNGN1SVh6VEFyTko5MWFCNFg5NFFtZi9PVlIzST0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
    server: http://192.168.3.5  # 代理服务器,端口省略,因为是80嘛,你懂的
  name: dev-cluster

contexts:
- context:
    cluster: dev-cluster
    user: dev-user
  name: dev-context

current-context: dev-context
kind: Config
preferences: {}
users:
  user:
    client-certificate-data: 此处保密
    client-key-data: 此处保密
  • 配置完成本,测试一下看看
kubectl get pods   ## 结果显示,没有获得资源。。你妈,什么鬼。。感觉想是通的哇。
  • 查看nginx日志
# 403异常,像是没有权限的意思。。但看接口地址,/api/api   什么鬼,感觉多加了一层
[14/Mar/2023:09:53:50 +0800] "GET /api/apis?timeout=32s HTTP/1.1" 403 185 "-" "kubectl/v1.25.0 (linux/amd64) kubernetes/a866cbe" "10.19.111.132"
[14/Mar/2023:09:54:44 +0800] "GET /api/api?timeout=32s HTTP/1.1" 403 188 "-" "kubectl/v1.25.0 (linux/amd64) kubernetes/a866cbe" "10.19.111.132"
[14/Mar/2023:09:54:44 +0800] "GET /api/apis?timeout=32s HTTP/1.1" 403 188 "-" "kubectl/v1.25.0 (linux/amd64) kubernetes/a866cbe" "10.19.111.132"
[14/Mar/2023:09:54:44 +0800] "GET /api/api?timeout=32s HTTP/1.1" 403 188 "-" "kubectl/v1.25.0 (linux/amd64) kubernetes/a866cbe" "10.19.111.132"
[14/Mar/2023:09:54:44 +0800] "GET /api/apis?timeout=32s HTTP/1.1" 403 188 "-" "kubectl/v1.25.0 (linux/amd64) kubernetes/a866cbe" "10.19.111.132"
[14/Mar/2023:09:54:44 +0800] "GET /api/api?timeout=32s HTTP/1.1" 403 188 "-" "kubectl/v1.25.0 (linux/amd64) kubernetes/a866cbe" "10.19.111.132"
[14/Mar/2023:09:54:44 +0800] "GET /api/apis?timeout=32s HTTP/1.1" 403 188 "-" "kubectl/v1.25.0 (linux/amd64) kubernetes/a866cbe" "10.19.111.132"
  • 修改nginx配置,把api这一层去掉,再尝试访问
# NND  还是403   我了去,什么情况
[14/Mar/2023:09:47:14 +0800] "GET /apis?timeout=32s HTTP/1.1" 403 185 "-" "kubectl/v1.25.0 (linux/amd64) kubernetes/a866cbe" "10.19.111.132"
[14/Mar/2023:09:47:14 +0800] "GET /api?timeout=32s HTTP/1.1" 403 185 "-" "kubectl/v1.25.0 (linux/amd64) kubernetes/a866cbe" "10.19.111.132"
[14/Mar/2023:09:47:14 +0800] "GET /apis?timeout=32s HTTP/1.1" 403 185 "-" "kubectl/v1.25.0 (linux/amd64) kubernetes/a866cbe" "10.19.111.132"
[14/Mar/2023:09:47:14 +0800] "GET /api?timeout=32s HTTP/1.1" 403 185 "-" "kubectl/v1.25.0 (linux/amd64) kubernetes/a866cbe" "10.19.111.132"
[14/Mar/2023:09:47:14 +0800] "GET /apis?timeout=32s HTTP/1.1" 403 185 "-" "kubectl/v1.25.0 (linux/amd64) kubernetes/a866cbe" "10.19.111.132"
[14/Mar/2023:09:47:14 +0800] "GET /api?timeout=32s HTTP/1.1" 403 185 "-" "kubectl/v1.25.0 (linux/amd64) kubernetes/a866cbe" "10.19.111.132"

搞了好几个小时, 当然不是简单的这么配置,slb修改等都算在上面

正想着要不要放弃,于是上google再查找一下资源,百度非常不靠谱,怎么也找不到资料。。

哈哈。。尽然真的找到了解决方案

你妈,尽然使用的是4层代理。。


于是,再次一顿操作猛如虎,按图操作

再次google

又找到原因了。哈哈

  • k8s的证书服务没有授权我代理的ip,所以就报错了

如何是好!!!!

再查一下资料,还真有解决方案
1. k8s证书重新生成,把代理ip加进去,这很明显比较麻烦
2. 执行命令时,参数加入
--insecure-skip-tls-verify也可以绕过

### 哈哈。。果然可以,终于搞定了
 kubectl get pods --insecure-skip-tls-verify

再次证明,不要轻易放弃。。。没有过不去的坎。。。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言