반응형
Introduction to Deployment with Kubeadm
- kubeadm 도구는 kubernetes의 best practice를 사용해 다중 노드 클러스터를 설정하는 데 도움이 된다.
- 우리는 이미 kube-apiserver, etcd, 컨트롤러 등을 포함한 다양한 구성 요소로 이루어진 kubernetes 클러스터에 대한 몇가지 보안 및 인증 요구 사항을 논의했다.
- 각 노드에 개별적으로 이러한 다양한 구성 요소를 설치하고 모든 구성 파일을 수정하여 모든 구성 요소가 서로 가리키도록 하고 동작하려면 인증서를 설정하는 것은 매우 귀찮은 작업이다.
- kubeadm 도구는 이러한 모든 작업을 처리 해 우리를 도와준다.
- kubeadm 도구를 사용해 kubernetes 클러스터를 설정하는 단계는 먼저 여러 노드가 필요하다.
- 여러 시스템 또는 VM을 프로비저닝 해 여러 노드를 구성해야한다. 이 노드는 물리적이거나 가상 머신이 될 수 있다.
- 모든 노드가 프로비저닝되면 하나를 마스터로 지정하고 나머지를 워커 노드로 지정해야 한다.
- 그 다음 단계는 호스트에 컨테이너 런타임을 설치하는 것이다.
- 우리는 구체적으로 containerd를 사용할 것이고 필요에 따라 다른 컨테이너 런타임을 사용해도 된다.
- 모든 노드에 containerd를 설치할 것이고 그 후 모든 노드에 kubeadm 도구를 설치해야한다.
- kubeadm 도구는 모든 필요한 구성요소를 올바른 노드에 올바른 순서로 설치해 kubernetes 솔루션을 부트스트래핑하는 데 도움이 된다.
- 그 후에는 마스터 서버를 초기화해야한다. 이 과정 중에 필요한 모든 구성 요소가 마스터 서버에 설치되고 구성된다.
- 그런 다음 마스터 서버가 초기화된 후에 워커 노드를 클러스터에 가입하기 전에 네트워크 전제 조건이 충족되었는지 확인해야 한다. 일반적인 네트워크 연결만으로는 부족하고 kubernetes는 마스터 및 워커 노드 간에 POD 네트워크라고 하는 특수한 네트워킹 솔루션이 필요하다.
- POD 네트워크가 설정되면 워커 노드를 마스터 노드에 가입시킬 준비가 끝난다. 그러면 워커 노드가 마스터 노드에 가입한 후 kubernetes 환경에 애플리케이션을 배포하기 위해 진행할 수 있다.
Deploy a Kubernetes Cluster using Kubeadm
kubeadm 설치
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
- 먼저 net.bridge.bridge-ng-call-iptables 를 1로 세팅해주기
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo mkdir -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.27/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.27/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
# To see the new version labels
sudo apt-cache madison kubeadm
sudo apt-get install -y kubelet=1.27.0-2.1 kubeadm=1.27.0-2.1 kubectl=1.27.0-2.1
sudo apt-mark hold kubelet kubeadm kubectl
- 링크를 참조해서 설정하면 된다.
- 주의해야할 점
- mkdir /etc/apt/keyrings와 권한 설정은 가이드에 없으니 빼먹지말고 설정해야 함
- 마스터에만 설치하는 것이 아니라 워커 노드에도 설치해야 함
kubeadm init 명령어 수행해주기
kubeadm init --apiserver-cert-extra-sans=controlplane --apiserver-advertise-address <eth0의 ip 설정> --pod-network-cidr=10.244.0.0/16
컨트롤 플레인에서 join 명령어 출력
kubeadm token create --print-join-command
kubeadm join 192.13.54.9:6443 --token 7hxa17.7r4fyg9pgnkjdijc --discovery-token-ca-cert-hash sha256:8e838a0fd0fd607c9bf6b9c7f51af4efd4503ff93579e777ec590e35bc738278
워커 노드에서 join 명령어 수행
root@node01:~> kubeadm join 192.23.108.8:6443 --token thubfg.2zq20f5ttooz27op --discovery-token-ca-cert-hash sha256:e7755ede5d6f0bae08bca4e13ccce8923995245ca68bba5f7ccc53c9b9728cdb
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
flannel 설치하기
curl -LO https://raw.githubusercontent.com/flannel-io/flannel/v0.20.2/Documentation/kube-flannel.yml
kube-flannel.yml 내용 수정 및 yaml 적용하기
args:
- --ip-masq
- --kube-subnet-mgr
- --iface=eth0
kubectl apply -f kube-flannel.yml
반응형
'자격증 > Kubernetes CKA' 카테고리의 다른 글
[CKA] Practice Test - Commands And Arguments (1) | 2024.01.01 |
---|---|
[CKA] Troubleshooting (0) | 2023.12.31 |
[CKA] Networking - 3 (0) | 2023.12.30 |
[CKA] Networking - 2 (1) | 2023.12.30 |
[CKA] Networking - 1 (1) | 2023.12.26 |