文章来源: https://www.cnblogs.com/qianyuliang/p/17044626.html현재 유일한 마스터 노드에서 다음 명령을 실행합니다.1단계:| 1 | kubeadm init phase upload-certs --upload-certs |
|---|---|
실행 결과 예시:``` 1 # kubeadm init phase upload-certs --upload-certs 2 I1109 14:34:00.836965 5988 version.go:255] 원격 버전이 훨씬 최신입니다: v1.25.3; stable-1.22로allback합니다 3 [upload-certs] "kubeadm-certs"라는 비밀을 "kube-system" 네임스페이스에 저장합니다 4 [upload-certs] 사용 중인 인증서 키: 5 ecf2abbfdf3a7bc45ddb2de75152ec12889971098d69939b98e4451b53aa3033
2단계:| 1 | `kubeadm 토큰 create --print-join-Command` |
|---|---|
실행 결과 예시:```
[root@k8s-master ~]# kubeadm token create --print-join-command
kubeadm join 172.16.0.1:6443 --token xxxxxx --discovery-token-ca-cert-hash sha256:xxxxxxx
3단계:받은 토큰과 키를 결합하여 아래와 같은 명령을 얻습니다:| 1 | kubeadm join 172.16.0.1:6443 --token q466v0.hbk3qjreznjsf8ew --discovery-token-ca-cert-hash sha256:xxxxxxx --control-plane --certificate-key xxxxxxx |
|---|---|
주의사항:1. --experimental-control-plane 옵션을 사용하지 마십시오. 오류가 발생합니다. 2. --control-plane --certificate-key 옵션을 추가하지 않으면 노드로 설치됩니다. 마스터로 설치하려면 반드시 추가해야 합니다. 3. join할 때 노드에 설치된 경우, 먼저 kubeadm reset을 실행한 후 join하세요.
4단계:join가 완료된 후, 원래 유일한 마스터 노드에서 아래와 같은 메시지를 표시합니다:| 123456789101112131415> | 이 노드가 클러스터에 참여했고 새로운 컨트롤 플레인 인스턴스가 생성되었습니다: * 인증서 서명 요청이 apiserver로 전송되었고 승인이 수령되었습니다.``* Kubelet이 새로운 안전한 연결 정보를 통지받았습니다.``* 컨트롤 플레인 (마스터) 라벨 및 테인트가 새로운 노드에 적용되었습니다.``* Kubernetes 컨트롤 플레인 인스턴스가 확장되었습니다.``* מקומי/스택ked etcd 클러스터에 새로운 etcd 멤버가 추가되었습니다. 이 노드에서 클러스터를 관리하려면 아래 명령을 실행하십시오 (일반 사용자로):</div><div> </div><div> mkdir` `-p $HOME/.kube sudo` `cp` `-i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id` `-u):$(id -g) $HOME/.kube``/config 'kubectl get nodes'를 실행하여 이 노드가 클러스터에 참여하는 것을 확인하세요. |
|---|---|
이렇게, 우리는任何一个 마스터 노드에서 아래 명령을 사용하여
| 1 | kubectl get nodes |
|---|
클러스터의 모든 노드를 볼 수 있습니다:```
kubectl get nodes
NAME STATUS ROLES AGE VERSION k8s-master Ready master 57m v1.18.0 k8s-master1 Ready master 21m v1.18.0 k8s-master2 Ready master 21m v1.18.0 k8s-node1 Ready 56m v1.18.0 k8s-node2 Ready 56m v1.18.0 k8s-node3 Ready 56m v1.18.0 k8s-node4 Ready 56m v1.18.0 k8s-node5 Ready 56m v1.18.0
에러 메시지:1. 첫 번째 클러스터 참여 시 아래와 같은 에러가 발생할 수 있습니다:```
1 [preflight] 사전 비행 검사를 진행 중입니다
2 [preflight] 클러스터에서 구성 정보를 읽고 있습니다...
3 [preflight] 참고: 'kubectl -n kube-system get cm kubeadm-config -oyaml'를 통해 이 구성 파일을 살펴볼 수 있습니다
4 error execution phase preflight:
5 새로운 컨트롤 플레인 인스턴스를 호스트하는 조건 중 하나 이상이 만족되지 않았습니다.
6
7 클러스터에 안정적인 controlPlaneEndpoint 주소가 없는 클러스터에 새로운 컨트롤 플레인 인스턴스를 추가할 수 없습니다
8
9 해결 방법:
10 * 클러스터에 안정적인 controlPlaneEndpoint 주소가 있습니다.
11 * 컨트롤 플레인 인스턴스 간에 공유해야 하는 인증서가 제공됩니다.
12
13
14 --v=5 이상의 옵션을 사용하여 이 에러의 스택 트레이스를 확인하세요
해결 방법:| 12345678910> | kubeadm-config.yaml 파일을 확인합니다``kubectl -n kube-system get cm kubeadm-config -oyaml``controlPlaneEndpoint가 없음을 발견합니다``controlPlaneEndpoint를 추가합니다``kubectl -n kube-system edit cm kubeadm-config``대략적인 위치:``kind: ClusterConfiguration``kubernetesVersion: v1.18.0``controlPlaneEndpoint: 172.16.0.56:6443``준비된 마스터 노드에 kubeadm join 명령을 실행합니다 |
|---|---|