4. kubeadm join

4.1. Environment

已安装 kubeadm, kubelet, kubectl

安装时,全使用 root 用户。直到 kubeadm join 成功后,全使用 非root用户

192.168.31.120 km master
192.168.31.119 kn1 node
192.168.31.118 kn2 node

4.2. kubeadm join

/etc/kubernetes/pki/ca.crt already exists

sudo kubeadm join –token ce4253.8322cc2590378260 192.168.31.120:6443 –discovery-token-ca-cert-hash sha256:bb0b9ef27e5ffef06776ca10a87ed548cefedc703ddaf904316c87d4a7f3655d

这个来自于 master节点, kubeadm init 后的提示。

jlch@kn1:~$ sudo kubeadm join --token ce4253.8322cc2590378260 192.168.31.120:6443 --discovery-token-ca-cert-hash sha256:bb0b9ef27e5ffef06776ca10a87ed548cefedc703ddaf904316c87d4a7f3655d
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[preflight] Running pre-flight checks
[preflight] WARNING: docker version is greater than the most recently validated version. Docker version: 17.05.0-ce. Max validated version: 17.03
[preflight] Some fatal errors occurred:
    /etc/kubernetes/pki/ca.crt already exists
    /etc/kubernetes/kubelet.conf already exists
    running with swap on is not supported. Please disable swap
[preflight] If you know what you are doing, you can skip pre-flight checks with `--skip-preflight-checks`
jlch@kn1:~$ mkdir etc.kubernetes
jlch@kn1:~$ mkdir etc.kubernetes/pki/
jlch@kn1:~$ sudo mv /etc/kubernetes/pki/ca.crt etc.kubernetes/pki/
jlch@kn1:~$ sudo mv /etc/kubernetes/kubelet.conf etc.kubernetes/

Please disable swap

jlch@kn1:~$ sudo kubeadm join --token ce4253.8322cc2590378260 192.168.31.120:6443 --discovery-token-ca-cert-hash sha256:bb0b9ef27e5ffef06776ca10a87ed548cefedc703ddaf904316c87d4a7f3655d
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[preflight] Running pre-flight checks
[preflight] WARNING: docker version is greater than the most recently validated version. Docker version: 17.05.0-ce. Max validated version: 17.03
[preflight] Some fatal errors occurred:
    running with swap on is not supported. Please disable swap
[preflight] If you know what you are doing, you can skip pre-flight checks with `--skip-preflight-checks`
jlch@kn1:~$ sudo swapoff -a

再来

jlch@kn1:~$ sudo kubeadm join --token ce4253.8322cc2590378260 192.168.31.120:6443 --discovery-token-ca-cert-hash sha256:bb0b9ef27e5ffef06776ca10a87ed548cefedc703ddaf904316c87d4a7f3655d
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[preflight] Running pre-flight checks
[preflight] WARNING: docker version is greater than the most recently validated version. Docker version: 17.05.0-ce. Max validated version: 17.03
[discovery] Trying to connect to API Server "192.168.31.120:6443"
[discovery] Created cluster-info discovery client, requesting info from "https://192.168.31.120:6443"
[discovery] Requesting info from "https://192.168.31.120: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 "192.168.31.120:6443"
[discovery] Successfully established connection with API Server "192.168.31.120:6443"
[bootstrap] Detected server version: v1.8.4
[bootstrap] The server supports the Certificates API (certificates.k8s.io/v1beta1)

Node join complete:
* Certificate signing request sent to master and response
received.
* Kubelet informed of new secure connection details.

Run 'kubectl get nodes' on the master to see this machine join.
jlch@kn1:~$

成功了。

回 master 检查一下。