새로 장만한 라즈베리파이4에 쿠버네티스 컨트롤플레인 설치를 완료했습니다.
2022.08.03 - [Raspberry pi] - 라즈베리파이4 쿠버네티스 설치
그리고 기존에 사용하던 라즈베리파이2에 이것저것 돌리던 잡동사니들을 컨테이너화 해서 라즈베리파이4에 쿠버네티스 위에 올렸습니다.
이제 라즈베리파이2가 비었으니, OS를 재설치하고 쿠버네티스 워커노드로 라즈베리파이4에 join 시키려고 합니다.
재설치하는 이유는,
기존에 사용하던 OS는 라즈비엔 jessie였는데요.
쿠버네티스를 설치하려고 이것저것 시도할때마다 EOL(End of Life) 경고가 자꾸 발생해서, 초기화를 결심했습니다.
라즈베리파이2에 최신 이미지 올리는 것은, 지난번 사용한 Raspberry pi Imager를 사용하면 어렵지 않습니다.
지난 포스팅을 참조하시구요.
2022.07.27 - [Raspberry pi] - 라즈베리파이 4 라즈비안 64bit 설치 : SSH 최초 접속 : 스펙 확인
이번에는 쿠버네티스 워커노드의 설치부터 join까지를 시도해보겠습니다.
기본 설치과정은 유사합니다.
실패하거나 삽질한 것들은 빼고 성공한 명령어만 나열해봅니다.
root 계정으로 작업했습니다.
$ apt-get update & apt-get upgrade
$ swapoff -a
$ systemctl disable dphys-swapfile.service
$ reboot now
$ apt install containerd
$ sed -i '$ s/$/ cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 swapaccount=1 systemd.unified_cgroup_hierarchy=0/' /boot/cmdline.txt
$ 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
$ 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
$ apt update && sudo apt install -y kubelet kubeadm kubectl
$ apt-mark hold kubelet kubeadm kubectl
그리고 vi편집기로 containerd 설정을 열어 disabled_plugins = ["cri"] 항목을 주석처리합니다.
$ vi /etc/containerd/config.toml
.
.
#disabled_plugins = ["cri"]
.
.
그리고 다시 리부트
$ reboot now
컨트롤플레인인 라즈베리파이4를 설치한지 오래되어서 join을 위한 토큰값이 만료되었기 때문에 새로 생성해줍니다.
$ kubeadm token create
[토큰값 출력]
$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
[해시값 출력]
각각에서 나온 토큰값과 해시값으로 join 명령어를 조합하여 워커노드(라즈베리파이2)에서 실행합니다.
root 계정으로 실행합니다.
$ kubeadm join [컨트롤플레인 IP]:6443 --token [토큰값] --discovery-token-ca-cert-hash sha256:[해시값]
아래와 같이 출력되면 정상입니다.
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.
컨트롤플레인에서 노드를 조회해봅니다.
$ k get node
NAME STATUS ROLES AGE VERSION
raspberrypi2 Ready <none> 42m v1.24.3
raspberrypi4 Ready control-plane 12d v1.24.3
드디어 컨트롤플레인만 외로이 홀로있던 쿠버네티스 클러스터에 워커노드가 붙었습니다.
$ k get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
cluster-shell 1/1 Running 1 (4d9h ago) 4d9h 10.244.0.81 raspberrypi4 <none> <none>
coin-gather-5d7b766468-bd5rc 1/1 Running 0 47h 10.244.0.94 raspberrypi4 <none> <none>
coin-trader-6c99cf5b4f-l5zhp 1/1 Running 0 23h 10.244.0.111 raspberrypi4 <none> <none>
fan-controller-chftl 1/1 Running 0 41m 10.244.1.3 raspberrypi2 <none> <none>
fan-controller-spgm8 1/1 Running 0 5d8h 10.244.0.55 raspberrypi4 <none> <none>
mariadb-custom-6c89d5546f-nzbk4 1/1 Running 0 2d1h 10.244.0.91 raspberrypi4 <none> <none>
그동안 만들었던 pod들은 아직 라즈베리파이4(컨트롤플레인)에 있습니다.
유일하게 데몬셋인 fan-conttoller 만 라즈베리파이2에 배포되었네요.
하지만, 라즈베리파이2에는 쿨링팬이 달려있지 않습니다.ㅜㅜ
하나 사서 달아줘야겠네요.
'Raspberry pi' 카테고리의 다른 글
라즈베리파이 쿠버네티스에 Prometheus + Grafana 올리기 (0) | 2022.08.25 |
---|---|
라즈베리파이 2대 쿠버네티스 클러스터링 구성 완료 (0) | 2022.08.17 |
퍼시스턴스 볼륨을 사용하면 기존 파일이 사라지는 문제 해결 (0) | 2022.08.11 |
도커 레지스트리 (nexus3 oss) 만들기 : 커스텀빌드 이미지 올리기 (0) | 2022.08.10 |
라즈베리파이4 도커허브에 없는 오픈소스 직접 빌드하기 : mariadb (0) | 2022.08.08 |