Kubernetes

오래된 노트북 Kubernetes Worker Node로 만들기

[혜안] 2023. 11. 21. 01:18
728x90

오래된 노트북 버리느니 K8s Worker Node로 활용해보려고 합니다.

먼저 윈도우를 지우고 Ubuntu 22.04로 새로 설치합니다.

파티션부터 삭제하고 재설치하는데, Worker node용 Ubuntu는 스왑 영역이 필요없으므로, 아예 파티션 나눌때에 스왑은 할당해주지 않았습니다.

그리고 텍스트 모드로 부팅하도록 설정해줍니다.

텍스트 모드로 부팅

$ sudo vi /etc/default/grub
.
.
#아래 라인 주석해제
GRUB_TERMINAL=console
.
.

$ sudo update-grub
$ sudo  systemctl set-default multi-user.target
$ sudo reboot

 

최소 설치를 했더니 없는 패키지가 좀 있네요.

기본 패키지 설치

$ sudo apt update
$ sudo apt install ssh net-tools curl

 

이제 Worker node가 되기 위한 설치를 시작합니다.

Containerd 설치 및 설정

$sudo su
$ apt install containerd

$ mkdir -p /etc/containerd
$ containerd config default | sudo tee /etc/containerd/config.toml

$ 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
$ sysctl --system

$ echo 1 > /proc/sys/net/ipv4/ip_forward
$ modprobe br_netfilter
$ echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

$ cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF

 

Containerd Cgroup 사용 설정

 SystemdCgroup = false를 true로 변경

$ vi /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  ...
  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
    SystemdCgroup = true
    
 $ systemctl restart containerd

 

컨트롤플레인에서 클러스터버전 조회

$ kubectl get node
NAME           STATUS   ROLES           AGE    VERSION
raspberrypi2   Ready    <none>          462d   v1.24.3
raspberrypi3   Ready    <none>          325d   v1.24.3
raspberrypi4   Ready    control-plane   474d   v1.24.3

 

Kubelet, Kubeadm, Kubectl 버전 지정하여 설치

$ apt update & apt install kubelet=1.24.3-00 kubeadm=1.24.3-00 kubectl=1.24.3-00

 

버전 업데이트 안되도록 고정

$ apt-mark hold kubelet kubeadm kubectl

 

컨트롤플레인에서 클러스터 조인 명령어 생성

$ sudo kubeadm token list
TOKEN                     TTL         EXPIRES                USAGES                   DESCRIPTION                                                EXTRA GROUPS
xizsha.xxx2fxxxxr   17h         2023-11-21T08:19:31Z   authentication,signing   <none>                                                     system:bootstrappers:kubeadm:default-node-token

$ sudo kubeadm token  create --print-join-command
kubeadm join 192.168.0.11:6443 --token xizsha.xxx2fxxxxr --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 

 

클러스터 조인

$ kubeadm join 192.168.0.11:6443 --token xizsha.xxx2fxxxxr --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 

아래와 같이 나오면 성공

[preflight] Running pre-flight checks
        [WARNING SystemVerification]: missing optional cgroups: blkio
[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.

 

 

728x90