microk8s,DEVOPS:无法连接到服务器:x509:证书对 <internal IPs> 有效,对 <external IP> 无效
microk8s, DEVOPS : Unable to connect to the server: x509: certificate is valid for <internal IPs>, not <external IP>
我在 ubuntu 笔记本电脑上有一个 microk8s 集群。
我想从 azure devops 管道在其上应用部署 yaml 文件。
我已经在我的 devops 中成功定义了一个 Kubernetes 服务连接并且它通过了验证。虽然当我尝试应用 yaml 文件时,我得到了这些行
/usr/bin/kubectl apply -f /home/vsts/work/1/s/devops/deploymen.yaml -o json
##[error]Unable to connect to the server: x509: certificate is valid for 127.0.0.1, 10.152.183.1, 192.168.50.69, 172.17.0.1, 10.1.80.0, not <my external IP>
192.168.50.69是笔记本在我网络中的ip
我应该在哪里添加我的外部 IP?
编辑:
我找到了 Authentication and authorization 并编辑了 /var/snap/microk8s/current/certs/csr.conf.template
所以它现在包含了我的 IP。
文章说:
After changing, the apiserver-kicker will automatically detect the difference, generate new certs and restart the apiserver. Your DNS server settings and kubeconfig file must be updated appropriately.
certificate-authority-data /var/snap/microk8s/current/certs/ca.crt
中的证书现在看起来与 microk8s config
中的不同
我还更新了 kubeconfig 如上所述
但还是没有运气!
我重现了您的问题,解决方案似乎是在 kubeconfig 文件中添加证书或跳过 tls 验证。
您可以通过将 insecure-skip-tls-verify: true
添加到 kubeconfig 文件来实现它,使其看起来像这样:
- cluster:
insecure-skip-tls-verify: true
server: https://<master_ip>:<port>
或在你的microk8s集群上修改kubeconfig
并将server: https://127.0.0.1:16443
更改为server: https://<master_ip>:16443
并将其复制到你要从中访问集群的主机。
解决这些问题的方法是修改模板并添加缺少的 IP 地址
/var/snap/microk8s/current/certs/csr.conf.template
...
[ alt_names ]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.cluster
DNS.5 = kubernetes.default.svc.cluster.local
IP.1 = 127.0.0.1
IP.2 = 192.168.1.1
IP.100 = 192.168.1.1 # USE IP > 100
#MOREIPS
...
When you modify this template files, microk8s daemon generates a new csr.conf
发生这种情况是因为如果您检查 sudo cat /var/snap/microk8s/current/certs/csr.conf
文件,您正在分配的 IP 的 ID 已被另一个 IP 使用。
要解决此冲突,必须使用更高的 ID,这会起作用
我在 ubuntu 笔记本电脑上有一个 microk8s 集群。 我想从 azure devops 管道在其上应用部署 yaml 文件。
我已经在我的 devops 中成功定义了一个 Kubernetes 服务连接并且它通过了验证。虽然当我尝试应用 yaml 文件时,我得到了这些行
/usr/bin/kubectl apply -f /home/vsts/work/1/s/devops/deploymen.yaml -o json
##[error]Unable to connect to the server: x509: certificate is valid for 127.0.0.1, 10.152.183.1, 192.168.50.69, 172.17.0.1, 10.1.80.0, not <my external IP>
192.168.50.69是笔记本在我网络中的ip
我应该在哪里添加我的外部 IP?
编辑:
我找到了 Authentication and authorization 并编辑了 /var/snap/microk8s/current/certs/csr.conf.template
所以它现在包含了我的 IP。
文章说:
After changing, the apiserver-kicker will automatically detect the difference, generate new certs and restart the apiserver. Your DNS server settings and kubeconfig file must be updated appropriately.
certificate-authority-data /var/snap/microk8s/current/certs/ca.crt
中的证书现在看起来与 microk8s config
我还更新了 kubeconfig 如上所述
但还是没有运气!
我重现了您的问题,解决方案似乎是在 kubeconfig 文件中添加证书或跳过 tls 验证。
您可以通过将 insecure-skip-tls-verify: true
添加到 kubeconfig 文件来实现它,使其看起来像这样:
- cluster:
insecure-skip-tls-verify: true
server: https://<master_ip>:<port>
或在你的microk8s集群上修改kubeconfig
并将server: https://127.0.0.1:16443
更改为server: https://<master_ip>:16443
并将其复制到你要从中访问集群的主机。
解决这些问题的方法是修改模板并添加缺少的 IP 地址
/var/snap/microk8s/current/certs/csr.conf.template
...
[ alt_names ]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.cluster
DNS.5 = kubernetes.default.svc.cluster.local
IP.1 = 127.0.0.1
IP.2 = 192.168.1.1
IP.100 = 192.168.1.1 # USE IP > 100
#MOREIPS
...
When you modify this template files, microk8s daemon generates a new
csr.conf
发生这种情况是因为如果您检查 sudo cat /var/snap/microk8s/current/certs/csr.conf
文件,您正在分配的 IP 的 ID 已被另一个 IP 使用。
要解决此冲突,必须使用更高的 ID,这会起作用