Raspberry Pi 및 ClusterHat의 K3
ClusterHat 및 ClusterCTRL을 사용하여 Raspberry Pi 클러스터에 k3s를 배포하는 방법을 알아봅니다.
하드웨어
맞춤형 OS 이미지
ClusterHat을 사용하고 있으므로 custom OS images을 사용하는 것이 좋습니다. 이 안내서에서는 각각 64비트 버전을 사용하고 컨트롤러에는
CNAT Lite
버전을 사용합니다. 각 이미지에 대해 SSH를 활성화합니다. 사용자 이름은 pi
일 필요는 없지만 이 가이드의 경우 각 노드에서 사용자 이름이 동일해야 합니다. 각 SD 카드를 구울 때 각각의 장치에 하나씩 넣어 정리하십시오. P1 노드는 이더넷 컨트롤러와 같은 쪽에 있는 슬롯입니다. 노드는 순서대로 전원 및 HDMI 커넥터와 같은 쪽에 있는 P4로 증가합니다. Raspberry Pi Imager을 사용하여 SD 카드를 만드는 자세한 단계는 를 참조하십시오.첫 부팅
각각의 SD 카드를 각각의 노드에 삽입하면 제어 노드를 켤 수 있습니다. ClusterHat은 추가 노드에 전원과 네트워킹을 제공합니다. 각 노드의 전원을 독립적으로 제어할 수 있습니다. 이전 단계에서 활성화한 항목에 따라 WIFI 또는 이더넷을 통해 SSH를 통해 장치에 연결할 수 있습니다.
제어 노드에 연결하고 P1의 전원을 켭니다.
pi@control-node:~ $ clusterctrl on p1
You will see the green LED light up and the node will begin booting up.
다른 노드의 전원을 켭니다.
pi@control-node:~ $ clusterctrl on p2 && clusterctrl on P3 && clusterctrl on p4
OS 이미지 업데이트
업스트림 리포지토리에서 각 이미지를 업데이트하여 OS 이미지가 릴리스된 이후 변경된 내용을 가져옵니다.
제어 노드로 시작하십시오.
pi@control-node:~ $ sudo apt update && sudo apt dist-upgrade -y
선택적으로 제어 노드의/etc/hosts에 다음 줄을 추가합니다.
172.19.181.1 p1
172.19.181.2 p2
172.19.181.3 p3
172.19.181.4 p4
You can also use the IP address directly.
ssh를 통해 각 추가 노드를 업데이트합니다.
pi@control-node:~ $ ssh p1 'sudo apt update && sudo apt dist-upgrade -y'
pi@control-node:~ $ ssh p2 'sudo apt update && sudo apt dist-upgrade -y'
pi@control-node:~ $ ssh p3 'sudo apt update && sudo apt dist-upgrade -y'
pi@control-node:~ $ ssh p4 'sudo apt update && sudo apt dist-upgrade -y'
이 글을 쓰는 시점에서 각 노드의 기본 OS에 대한 추가 변경이 필요합니다. cgroups의 기본값이 최근에 변경되었으므로 컨테이너를 실행하려면 이 변경이 필요합니다.
각 노드의
/boot/cmdline.txt
에 다음 구성을 추가한 다음 재부팅합니다.cgroup_memory=1 cgroup_enable=memory
k3s 준비
k3s에 대한 설명서는 믿을 수 없습니다. 이 가이드에서는
k3sup
라는 또 다른 도구를 사용하여 k3s 클러스터를 배포합니다.먼저 k3sup을 설치합니다.
pi@control-node:~ $ sudo curl -sLS https://get.k3sup.dev | sh
k3sup의 제어 노드를 설치합니다.
pi@control-node:~ $ k3sup install --ip 172.19.181.254 --user $(whoami)
해당 프로세스는 다음과 유사한 출력으로 종료됩니다.
...
Saving file to: /home/pi/kubeconfig
# Test your cluster with:
export KUBECONFIG=/home/pi/kubeconfig
kubectl config set-context default
kubectl get node -o wide
pi@control-node:~ $
컨텍스트를 설정하고 제어 노드가 준비되었는지 확인한 후 다른 노드를 클러스터에 추가합니다.
pi@control-node:~ $ k3sup join --ip 172.19.181.1 --server-ip 172.19.181.254 --user $(whoami)
pi@control-node:~ $ k3sup join --ip 172.19.181.2 --server-ip 172.19.181.254 --user $(whoami)
pi@control-node:~ $ k3sup join --ip 172.19.181.3 --server-ip 172.19.181.254 --user $(whoami)
pi@control-node:~ $ k3sup join --ip 172.19.181.4 --server-ip 172.19.181.254 --user $(whoami)
이제 약 $100의 하드웨어에 배포된 kubernetes 클러스터가 있습니다.
pi@control-node:~ $ kubectl get node
NAME STATUS ROLES AGE VERSION
control-node Ready control-plane,master 25m v1.24.3+k3s1
p1 Ready <none> 20m v1.24.3+k3s1
p2 Ready <none> 20m v1.24.3+k3s1
p3 Ready <none> 22m v1.24.3+k3s1
p4 Ready <none> 19m v1.24.3+k3s1
pi@control-node:~ $
테스트 배포
클러스터에 배포:
spring-boot-native-pi.yaml 파일 생성
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-boot-native-pi
spec:
selector:
matchLabels:
app: springbootnativepi
replicas: 4
template:
metadata:
labels:
app: springbootnativepi
spec:
containers:
- name: springbootnativepi
image: dashaun/spring-pi-native:focal-arm64
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: springbootnativepi
ports:
- protocol: TCP
port: 8080
확인하다:
pi@control-node:~ $ kubectl get pods
NAME READY STATUS RESTARTS AGE
spring-boot-native-pi-59f7d7659c-hvlp8 1/1 Running 0 42m
spring-boot-native-pi-59f7d7659c-dp7nn 1/1 Running 0 42m
spring-boot-native-pi-59f7d7659c-sf899 1/1 Running 0 42m
spring-boot-native-pi-59f7d7659c-99vfq 1/1 Running 0 42m
pi@control-node:~ $
요약
이 가이드에서는 Raspberry Pi를 사용하여 ClusterHat에서 제공하는 사용자 지정 OS 이미지 위에 k3s를 배포하는 방법을 배웠습니다.
Reference
이 문제에 관하여(Raspberry Pi 및 ClusterHat의 K3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dashaun/k3s-on-raspberry-pi-and-clusterhat-m6k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)