k3s/k8s 如何远程控制?比如使用 kubenav 或者 kuber app 来远程访问时, 6443 端口证书如何导出到手机上?

2021-04-27 23:31:55 +08:00
 WildCat

我想配置一下在手机上访问 Kubernetes 远程集群。现在遇到的问题是,我可以用 kubectl proxy 把 API server 代理到服务器上然后用 SSH 转发到本地。

不过在手机上不方便如此操作。

想问一下能否直接访问 服务器公网 IP:6443 来实现远程访问 /控制?

目前卡在了 TLS 证书上。k3s 有一大堆证书,可以导入到 iPhone 并且信任。但是似乎没有作用。请问大概是用哪一个呢?

2223 次点击
所在节点    Kubernetes
12 条回复
defunct9
2021-04-28 10:21:33 +08:00
k9s
hehehu
2021-04-28 10:42:24 +08:00
kubeconfig 有个配置叫 insecure-skip-tls-verify
WildCat
2021-04-28 18:39:59 +08:00
@hehehu 还是想用 tls
kennylam777
2021-04-29 01:41:10 +08:00
你需要導入的有 3 個

1. kube-apiserver 的 CA 證書
2. kube-admin 的證書
3. kube-admin 的 private key

kubeconfig 全都都有, 自己 base64 -d 解出來吧

雖然我不知道你用甚麼 client 可以指定用 kube-admin 證書來做 TLS Client auth. 但基本的認證就是這麼做的
WildCat
2021-04-29 10:32:35 +08:00
@kennylam777 感谢,晚点我试试。
我在 iPhone 上用 kubenav 或者 kuber
kennylam777
2021-04-29 10:44:24 +08:00
@WildCat 不說不知道還真的有 k8s mobile app, 太強了

這裡就有 kubenav 導入 kubeconfig 的方法, 原理就是 TLS client auth 的
https://docs.kubenav.io/mobile/kubeconfig/
WildCat
2021-04-29 13:09:39 +08:00
@kennylam777 嗯,是的,kubenav 看起来很不错。

TLS client auth 是指证书 auth 吗?我个人想 trust 自签名证书实现 TLS 加密,目前唯一疑惑的点是哪个对应哪个?

比如:
- 让 iPhone 系统信任哪个证书
- 这里的 Client certificate data 和 Client key data 分别对应主节点上哪个证书



感谢!
kennylam777
2021-04-29 22:23:22 +08:00
不清楚 iOS app 上的信任鏈, 應該不用動到系統上的證書信任鏈吧, 其他 app 不必信任 k8s apiserver 的 CA

能導入 kubeconfig 本來就帶三個相關的
certificate-authority-data -> apiserver 的 CA, kubectl 會用這張去驗證 server 欄 https://xxx:6443 的證書
client-certificate-data -> 你的 TLS Client cert (public key)
client-key-data -> 你的 TLS Client cert (private key)
WildCat
2021-04-30 09:22:05 +08:00
感谢!

我其实用的是 k3s 。目前 key/证书 有点太多,没能对应的上。

- certificate-authority-data 应该对应的是 `client-kube-apiserver.crt` 或者 `client-ca.crt`?
- client-certificate-data 这个对应的是那哪个呢?
- client-key-data -> 是 `client-kube-apiserver.key` 吗?

目前有大概这么多证书 /keys (在 /var/lib/rancher/k3s/server 目录下):

➜ tls tree .
.
├── client-admin.crt
├── client-admin.key
├── client-auth-proxy.crt
├── client-auth-proxy.key
├── client-ca.crt
├── client-ca.key
├── client-cloud-controller.crt
├── client-cloud-controller.key
├── client-controller.crt
├── client-controller.key
├── client-k3s-controller.crt
├── client-k3s-controller.key
├── client-kube-apiserver.crt
├── client-kube-apiserver.key
├── client-kube-proxy.crt
├── client-kube-proxy.key
├── client-kubelet.key
├── client-scheduler.crt
├── client-scheduler.key
├── dynamic-cert.json
├── etcd
│   ├── client.crt
│   ├── client.key
│   ├── peer-ca.crt
│   ├── peer-ca.key
│   ├── peer-server-client.crt
│   ├── peer-server-client.key
│   ├── server-ca.crt
│   ├── server-ca.key
│   ├── server-client.crt
│   └── server-client.key
├── request-header-ca.crt
├── request-header-ca.key
├── server-ca.crt
├── server-ca.key
├── service.key
├── serving-kube-apiserver.crt
├── serving-kube-apiserver.key
├── serving-kubelet.key
└── temporary-certs
├── apiserver-loopback-client__.crt
└── apiserver-loopback-client__.key
kennylam777
2021-04-30 10:08:22 +08:00
@WildCat 看名字我就猜

certificate-authority-data: client-ca.crt
client-certificate-data: client-admin.crt
client-key-data: client-admin.key

要驗證就跑
openssl verify -verbose -CAfile client-ca.crt client-admin.crt

顯示 OK 就 OK
client-admin.crt: OK


怪不得 CKA 要考 kube-apiserver 的證書路徑配置, 無論是 k3s 還是 kubeadm 安裝的都一樣原理, 用 kube-apiserver 來跑
kennylam777
2021-04-30 10:14:41 +08:00
certificate-authority-data 應該是 server-ca.crt

client-ca.crt 可以是另一個 CA

但我奇怪的是, 你都裝上了 k3s, 肯定有用過 kubectl 吧, 為甚麼好像不知道 kubeconfig 在哪裡的, 根本不用自己組證書啊.....

kubenav 的官網第一句就寫著"You can also import a Kubeconfig file to add a new cluster to the kubenav app."
https://docs.kubenav.io/mobile/kubeconfig/

找出你 k3s 的 kubeconfig 吧, 沒改過就在$HOME/.kube/config
WildCat
2021-04-30 11:05:04 +08:00
@kennylam777

感谢您的回答!

是的,一直都在用 k3s 来部署服务了(大部分都运行超过一年了),原来用的是 Docker Swarm 。

kubeconfig 我导入之后,连接依旧是 tls 错误,所以很怀疑是证书问题。如果连接 https://ip:6443 的话,我个人就很怀疑是不是自签名证书不被系统信任导致的问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/773717

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX