相关文章推荐
有腹肌的鸡蛋  ·  [WPF] VisualBrush ...·  1 年前    · 
重感情的水煮肉  ·  python - mlflow with ...·  1 年前    · 
逼格高的自行车  ·  javascript onload ...·  1 年前    · 
  • Kubernetes版本1.15
  • 测试客户端centos7
  1. 将构建于内网网络环境上的kubernetes集群的/etc/kubernetes/admin.conf文件拷贝到外网的一台装有kubernetes客户端的设备上,文件内容放到外网设备的~/.kube/config文件中
  2. 然后修改config文件中的server: https://${ip}:6443中的ip为kubernetes集群的master设备的外网IP
  3. 然后使用kubectl get pods 等方法去访问构建于内网IP的kubernetes集群
  4. 反馈结果Unable to connect to the server: x509: certificate is valid for ${kubernetes集群的内网IP列表}, not ${kubernetes集群的master设备的外网IP}

我们的kubernetes的apiserver-advertise-address是一个内网IP,默认情况下,kubernetes自建的CA会为apiserver签发一个证书,证书的默认可访问的是内网IP、kubernetes、kubernetes.default kubernetes.default.svc、kubernetes.default.svc.cluster.local,不包含设备的外网IP。所以直接通过admin.conf去访问kubernetes是不可能的。

  1. 删除当前kubernetes集群下的apiserver的cert和key
    rm /etc/kubernetes/pki/apiserver.*
  2. 生成新的apiserver的cert和key
    kubeadm init phase certs apiserver --apiserver-advertise-address ${原来的advertise ip} --apiserver-cert-extra-sans ${master的外网ip}
  3. 刷新admin.conf
    kubeadm alpha certs renew admin.conf
  4. 重启apiserver(可以先delete在apply)
    kubectl delete pod ${你的apiserver的pod} –n kube-system
    kubectl delete –f /etc/kubernetes/manifests/kube-apiserver.yaml
    kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml
    
  5. 在另一台装有kubernetes客户端的设备中,使用新生成的admin.conf访问集群
    kubectl get nodes

通过/etc/kubernetes/admin.conf去访问某个kubernetes集群时,报错 Unable to connect to the server: x509: certificate has expired or is not yet valid

问题解决方案

通过如下命令查看kubernetes的admin.conf中的证书的有效期,看是否有效
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text

==================================================

新问题 20200810

通过如上方式,重新进行尝试时,发现有的时候,删除pod之后重新reply不管用

新问题的解决方案

修改完apiserver的证书,更新admin.conf后,重启master所在设备,可以解决这个问题

关于外网设备访问一个advertise-address为内网IP的内网构建的kubernetes集群的问题问题描述问题原因解决方案问题描述将构建于内网网络环境上的kubernetes集群的/etc/kubernetes/admin.conf文件拷贝到外网的一台装有kubernetes客户端的设备上,文件内容放到外网设备的~/.kube/config文件中然后修改config文件中的serv... Unable to connect to the server : x509 : certificate is valid for 127.0.0.1, 10.0.1.12, 10.0.110.30, 10.68.0.1, 10.1.1.1, not 10.0.110.12 编辑/etc/kubernetes/ssl/kubernetes-csr.json 添加ip10.0.110.12 到 hosts 重新生成 kubernets证书和密钥 /opt/kub. node节点加入集群中是报错: x509 : certificate is valid for 10.96.0.1, 172.18.255.243, not 120.79.23.226 具体详细信息如下: 通过网上查找:https:/... Unable to connect to the server : x509 : certificate is valid for 10.96.0.1, 10.0.1.76, not 119.28.78.191 报错原因: Connect ion error: Get https://119.28.78.191:6443/api/v1/namespaces/default/pods?limit=500: x509 : certificate is valid for 10.96.0.1, 10.0.1.7
这个错误是k8s无法连接到服务器的错误,原因是证书只对特定的IP地址有效,而连接服务器时使用了其他的IP地址。这通常是由于服务器上的证书没有正确生成造成的。证书是用于验证服务器身份并确保安全通信的一种数字证明文件。在这种情况下,证书中包含的IP地址应该是服务器的IP地址。如果客户端尝试连接到不正确的IP地址或主机名,就会出现错误。 解决 问题 的最好方法是重新生成证书并确保在证书中包含正确的IP地址。管理员可以通过以下步骤 解决 问题 : 1. 查找证书,并确认证书中的IP地址是否正确。 2. 如果证书包含正确的IP地址,请确保客户端使用正确的IP地址连接到服务器。 3. 如果证书中的IP地址不正确,可以使用openssl重新生成证书,并在证书中包含正确的IP地址。以下是重新生成证书的步骤: a. 生成一个秘钥文件: openssl genrsa -out server .key 2048 b. 生成证书签名请求: openssl req -new -key server .key -out server .csr c. 在证书中添加IP地址: 在请求文件 server .csr中包含以下信息: subjectAltName = IP: <IP地址> d. 使用请求文件和秘钥生成证书: openssl x509 -req -in server .csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server .crt -days 3650 4. 更新证书后,重新连接服务器即可。