1. Introduction
- Kubernetes Control Plane 노드를 init하고 나면, 아래와 같은 문구가 나온다.
- 이를 이용하여, Kubernetes Worker, Backup Control Plane 노드에서 Join 한다.
- 하지만, 일정 기간이 지난 후에는 동작하지 않는데, 이는 token이 소멸되었기 때문
- 이 글에서는 Token을 생성하고, 생성된 Token을 이용하여 Worker 노드를 연결하는 방법을 알아본다.
2. Environment
- CentOS 7.9
- Docker 19.03
- Kubernetes 1.20.2 (kubeadm, kubelet, kubectl)
3. Join
3.1 Objective
- Worker 노드를 Control Plain 노드에 연결
3.2 Background
- Worker 노드가 Control Plain에 연결될 때, 서로 신뢰할 수 있는지 확인한다.
- Bidirectional trust라고 표현
- Node가 Control Plain을 신뢰하기 위해서 discovery 작업을 수행
- Control Plain의 Node를 신뢰하기 위해서 TLS bootstrap을 수행
- Discovery는 두 개의 방법으로 수행
- API Server를 통해 shared token을 사용(이 글에서 사용)
- File을 이용하는 방법
- Shared Token을 사용하려면, –discovery-token-ca-cert-hash flag을 이용하여 Control Plain의 Certificate Authority(CA)의 Public Key를 전달
- 이 flag을 사용하지 않으면, –discovery-token-unsafe-skip-ca-verification flag 전달
- 단, Discovery 과정이 생략되므로, Node는 신뢰할 수있는 Control Plain에 연결되었다고 보장할 수 없음
3.3 Token Create & Verification
3.4 Ca-cert 파일 Hash 계산
3.5 Worker 노드 Join
Reference
- https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-join/