Попытка добавить узел в кластер kubernetes с помощью kubeadm join показывает ошибку - PullRequest
0 голосов
/ 16 октября 2018

Я использую kubeadm для создания кластера kubernetes.Kubeadm init был успешным.Но когда я пытаюсь добавить узлы, я вижу эту ошибку.Любое направление высоко ценится.

kubeadm join 10.127.0.142:6443 --token ddd0 --discovery-token-ca-cert-hash sha256:ddddd
[preflight] running pre-flight checks
        [WARNING RequiredIPVSKernelModulesAvailable]: the IPVS proxier will not be used, because the following required kernel modules are not loaded: [ip_vs_sh ip_vs ip_vs_rr ip_vs_wrr] or no builtin kernel ipvs support: map[ip_vs_sh:{} nf_conntrack_ipv4:{} ip_vs:{} ip_vs_rr:{} ip_vs_wrr:{}]
you can solve this problem with following methods:
 1. Run 'modprobe -- ' to load missing kernel modules;
2. Provide the missing builtin kernel ipvs support

[discovery] Trying to connect to API Server "10.127.0.142:6443"
[discovery] Created cluster-info discovery client, requesting info from "https://10.127.0.142:6443"
[discovery] Requesting info from "https://10.127.0.142:6443" again to validate TLS against the pinned public key
[discovery] Cluster info signature and contents are valid and TLS certificate validates against pinned roots, will use API Server "10.127.0.142:6443"
[discovery] Successfully established connection with API Server "10.127.0.142:6443"
[kubelet] Downloading configuration for the kubelet from the "kubelet-config-1.12" ConfigMap in the kube-system namespace
configmaps "kubelet-config-1.12" is forbidden: User "system:bootstrap:mq0t2n" cannot get configmaps in the namespace "kube-system"

Ответы [ 3 ]

0 голосов
/ 14 декабря 2018

Я начал видеть этот тип сообщений в 1.12 с 5 декабря, сразу после выпуска 1.13.Я использовал установку по сценарию, поэтому не было никакого несовпадения версий или чего-либо между моим основным и рабочим узлами.Если версия 1.12 по-прежнему является желаемой версией, я опубликовал исправление для этой проблемы с разрешением: k8s 1.12 исправление разрешения на присоединение к kubeadm .

Исправление также представлено ниже:

Выполните ШАГИ 1, 2, 3, 4 на главном узле.

Выполните ШАГ 5 на рабочем узле.

ШАГ 1: Создатьновый ConfigMap "kubelet-config-1.12" из существующего "ConfigMap kubelet-config-1.13":

$ kubectl get cm --all-namespaces
$ kubectl -n kube-system get cm kubelet-config-1.13 -o yaml --export > kubelet-config-1.12-cm.yaml
$ vim kubelet-config-1.12-cm.yaml       #modify at the bottom:
                                        #name: kubelet-config-1.12
                                        #delete selfLink
$ kubectl -n kube-system create -f kubelet-config-1.12-cm.yaml

ШАГ 2: Получить префикс токена:

$ sudo kubeadm token list           #if no output, then create a token:
$ sudo kubeadm token create
TOKEN                       ...     ...
a0b1c2.svn4my9ifft4zxgg     ...     ...
# Token prefix is "a0b1c2"

ШАГ 3: Создайте новую роль "kubeadm: kubelet-config-1.12" из существующей роли "kubeadm: kubelet-config-1.13":

$ kubectl get roles --all-namespaces
$ kubectl -n kube-system get role kubeadm:kubelet-config-1.13 > kubeadm:kubelet-config-1.12-role.yaml
$ vim kubeadm\:kubelet-config-1.12-role.yaml    #modify the following:
                                                #name: kubeadm:kubelet-config-1.12
                                                #resourceNames: kubelet-config-1.12
                                                #delete creationTimestamp, resourceVersion, selfLink, uid (because --export option is not supported)    
$ kubectl -n kube-system create -f kubeadm\:kubelet-config-1.12-role.yaml

ШАГ 4: Создайте новую привязку ролей "kubeadm: kubelet-config-1.12" из существующей привязки ролей "kubeadm: kubelet-config-1.13":

$ kubectl get rolebindings --all-namespaces
$ kubectl -n kube-system get rolebinding kubeadm:kubelet-config-1.13 > kubeadm:kubelet-config-1.12-rolebinding.yaml
$ vim kubeadm\:kubelet-config-1.12-rolebinding.yaml     #modify the following:
                                                            #metadata/name: kubeadm:kubelet-config-1.12
                                                            #roleRef/name: kubeadm:kubelet-config-1.12
                                                            #delete creationTimestamp, resourceVersion, selfLink, uid (because --export option is not supported)
- apiGroup: rbac.authorization.k8s.io                       #add these 3 lines as another group in "subjects:" at the bottom, with the 6 character token prefix from STEP 2
  kind: Group
  name: system:bootstrap:a0b1c2 
$ kubectl -n kube-system create -f kubeadm\:kubelet-config-1.12-rolebinding.yaml

ШАГ 5: Выполнитьсоединение kubeadm с рабочего узла:

$ sudo kubeadm join --token <token> <master-IP>:6443 --discovery-token-ca-cert-hash sha256:<key-value> 
# If you receive 2 ERRORS, run kubeadm join again with the following options:
$ sudo kubeadm join --token <token> <master-IP>:6443 --discovery-token-ca-cert-hash sha256:<key-value> --ignore-preflight-errors=FileAvailable--etc-kubernetes-bootstrap-kubelet.conf,FileAvailable--etc-kubernetes-pki-ca.crt
0 голосов
/ 30 марта 2019
  1. kubectl -n kube-system get role kubeadm:kubelet-config-1.13 > kubeadm:kubelet-config-1.12-role.yaml

    #metadata/name: kubeadm:kubelet-config-1.12
    #roleRef/name: kubeadm:kubelet-config-1.12
    #delete creationTimestamp, resourceVersion, selfLink, uid (because --export option is not supported)
    
  2. kubectl apply -f kubeadm:kubelet-config-1.12-role.yaml

  3. kubectl -n kube-system get rolebinding kubeadm:kubelet-config-1.13 > kubeadm:kubelet-config-1.12-rolebinding.yaml

    #metadata/name: kubeadm:kubelet-config-1.12
    #roleRef/name: kubeadm:kubelet-config-1.12
    #delete creationTimestamp, resourceVersion, selfLink, uid (because --export option is not supported)
    
  4. kubectl apply -f kubeadm:kubelet-config-1.12-rolebinding.yaml

  5. kubectl get configmap kubelet-config-1.13 -n kube-system -oyaml > kubelet-config-1.12

    #metadata/name: kubelet-config-1.12
    #roleRef/name: kubelet-config-1.12
    #delete creationTimestamp, resourceVersion, selfLink, uid (because --export option is not supported)
    
  6. kubectl apply -f kubelet-config-1.12

  7. войдите в узел, к которому вы хотите присоединиться, и удалите следующие файлы:

    rm /etc/kubernetes/bootstrap-kubelet.conf
    rm /etc/kubernetes/pki/ca.crt
    
  8. теперь выполните команду kubeadm join

0 голосов
/ 17 октября 2018

Я почти уверен, что у вас есть несоответствие версий на главном и рабочем узлах.
Следуйте этой официальной инструкции по обновлению кластера до тех же версий.

Второе решение состоит в том, чтобыпонизить рабочий узел до версии главного узла

...