# 쿠버네티스 클러스터 구성

### 쿠버네티스 마스터 구성

> 해당 과정은 마스터 노드에서만 진행 함.

1. 클러스터 매니페스트  파일 생성

```
kubeadm config print init-defaults > kubeadm-init.yaml
```

```
vi kubeadm-init.yaml
```

1. 매니페스트 설정 변경

```
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.101.201
  bindPort: 6443
nodeRegistration:
  criSocket: unix:///var/run/containerd/containerd.sock
  imagePullPolicy: IfNotPresent
  name: m1.lab1.px.local
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.k8s.io
kind: ClusterConfiguration
kubernetesVersion: 1.27.0
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
  podSubnet: 10.224.0.0/16
scheduler: {}
```

| localAPIEndpoint.advertiseAddress | 마스터 노드의 IP |
| --- | --- |
| nodeRegistration.name | 마스터 노드의 호스트명 |
| clusterName | 쿠버네티스 클러스터 명 |
| networking.podSubnet | Pod에 할당되는 IP 범위 |

1. 마스터 노드 구성

```
kubeadm init --config=kubeadm-init.yaml
```

1. kubectl 명령어 사용 권한 부여

```
mkdir -p $HOME/.kube && \
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && \
sudo chown $(id -u):$(id -g) $HOME/.kube/config
```

### 워커 노드 조인(Join)

> 해당 과정은 워커 노드 3기 에서만 진행 함.

1. Join 토큰 생성

```
kubeadm token create --print-join-command
```

![Image](https://upload.cafenono.com/image/slashpageHome/20240522/151748_xP4v73lVyffT2RWO5E?q=75&s=1280x180&t=outside&f=webp)

1. 워커 노드 조인

```
kubeadm join 192.168.101.201:6443 --token g1ulmw.9xcrzcaj05it1aqy --discovery-token-ca-cert-hash \
  sha256:0b2215b0d0e0a08cbff01b9d34b9f08791cc80e512c98c8493623f4ab3bce36c
```

### CNI 설치

> 해당 과정은 마스터 노드에서만 진행 함.

1. Calico YAML 다운로드

```
wget https://raw.githubusercontent.com/projectcalico/calico/v3.27.2/manifests/calico.yaml --no-check-certificate
```

1. Calico 배포

```
kubectl apply -f calico.yaml
```

### 클러스터 구성 확인

1. 클러스터 확인

```
kubectl get nodes
```

1. Pod 상태 확인

```
kubectl get po -A
```

---

[쿠버네티스 구성요소 설치](https://slashpage.com/kies/5r398nmng9jkk2vwje7y)

[LAB1 종료](https://slashpage.com/kies/d367nxm34xr3v2j98pv1)

For the site tree, see the [root Markdown](https://slashpage.com/kies.md).
