Я не могу добавить CertSAN в конфигурацию кластера multimaster k8s - PullRequest
0 голосов
/ 27 декабря 2018

Я не могу добавить CertSAN в конфигурацию кластера с несколькими мастерами

Привет.Создал кластер k8s с тремя мастерами и одним рабочим узлом.Размещено в локальной сети 192.168.1.0/24.Точка входа реализована через виртуальный IP 192.168.1.42 через keepalived + nginx на каждом главном узле.Локальные рабочие узлы добавляются нормально.

Versions:
Ubuntu 18.04.1 LTS
kubeadm                               1.13.0-00
kubectl                               1.13.0-00
kubelet                               1.13.0-00
kubernetes-cni                        0.6.0-00
docker-ce                             18.06.1~ce~3-0~ubuntu

Мой init YAML: http://paste.org.ru/?5fvtpx

Я пересылаю порт 16443 на мастер.Я пытаюсь добавить рабочий узел из AWS.Я получаю сообщение об ошибке:

ubuntu@ip-172-31-18-25:~$ sudo kubeadm join 92.255.235.100:16443 --token XXX --discovery-token-ca-cert-hash sha256:XXX
[preflight] Running pre-flight checks
[discovery] Trying to connect to API Server "92.255.235.100:16443"
[discovery] Created cluster-info discovery client, requesting info from "https://92.255.235.100:16443"
[discovery] Requesting info from "https://92.255.235.100:16443" again to validate TLS against the pinned public key
[discovery] Failed to request cluster info, will try again: [Get https://92.255.235.100:16443/api/v1/namespaces/kube-public/configmaps/cluster-info: x509: certificate is valid for 10.96.0.1, 192.168.1.42, 192.168.1.42, 192.168.1.44, 192.168.1.46, 192.168.1.47, 192.168.1.42, 127.0.0.1, not 92.255.235.100]

Я ввел дополнительный CertSAN в configmap:

kubectl edit -n kube-system configmap

apiVersion: v1
data:
  ClusterConfiguration: |
    apiServer:
      certSANs:
      - master-k8s
      - node1
      - node2
      - 192.168.1.44
      - 192.168.1.46
      - 192.168.1.47
      - 192.168.1.42
      - 92.255.235.100
      - 127.0.0.1

Я попытался добавить CertSAN в configmap и обновить сертификаты.

 kubeadm alpha certs renew all

Но после обновления сертификата ошибка сохраняется.Обновлены все сертификаты, кроме CA, front-proxy-ca, sa.

|apiserver-kubelet-client.crt                            │   1099│Dec 25 16:48│
│ apiserver-kubelet-client.key                           │   1679│Dec 25 16:48│
│ apiserver.crt                                          │   1310│Dec 25 16:48│
│ apiserver.key                                          │   1679│Dec 25 16:48│
│ ca.crt                                                 │   1025│Dec 17 14:10│
│ ca.key                                                 │   1679│Dec 17 14:10│
│ front-proxy-ca.crt                                     │   1038│Dec 17 14:10│
│ front-proxy-ca.key                                     │   1679│Dec 17 14:10│
│ front-proxy-client.crt                                 │   1058│Dec 25 16:48│
│ front-proxy-client.key                                 │   1679│Dec 25 16:48│
│ sa.key                                                 │   1679│Dec 17 14:10│
│ sa.pub                                                 │    451│Dec 17 14:10|

Я попытался создать самозаверяющие сертификаты через easyrsa3, но cubernetis не принимает их даже после обновления CA.И не позволяет использовать kubectl:

 kubectl get pods --all-namespaces

Невозможно подключиться к серверу: x509: сертификат подписан неизвестным органом

Я обновил сертификат CA:

 sudo cp ca.crt /usr/local/share/ca-certificates/kubernetes.crt
 sudo update-ca-certificates

Но это не помогло.Я добавил сертификаты в конфиг kubernetes.http://paste.org.ru/?nqej8o Но это не помогло.

В машине AWS:

 sudo kubeadm join 92.255.235.100:16443 --token XXX --discovery-token-ca-cert-hash sha256:XXX
[preflight] Running pre-flight checks
[discovery] Trying to connect to API Server "92.255.235.100:16443"
[discovery] Created cluster-info discovery client, requesting info from "https://92.255.235.100:16443"
[discovery] Requesting info from "https://92.255.235.100:16443" again to validate TLS against the pinned public key
[discovery] Failed to request cluster info, will try again: [Get https://92.255.235.100:16443/api/v1/namespaces/kube-public/configmaps/cluster-info: x509: certificate signed by unknown authority]

В локальном мастере:

root@master-k8s:/root/pki_backup# kubectl get pods --all-namespaces
Unable to connect to the server: x509: certificate signed by unknown authority

В ранних версиях kubernetesбыла команда:

kubeadm alpha phase certs selfsign --apiserver-advertise-address=0.0.0.0 --cert-altnames=10.161.233.80 --cert-altnames=114.215.201.87

Но в версии 1.13.0 это не так.Как добавить дополнительный адрес мастера в сертификаты kubernetes?

...