라즈베리 파이 4B 쿠버네티스 클러스터
9811 단어 kubernetesraspberrypicluster
클러스터를 생성하려면 Google, Amazon…에서 제공하는 서비스를 사용하거나 각 노드에 수동으로 설치하면 됩니다.
나만의 미니 클러스터를 만드는 것을 선호합니다. 내 클러스터는 6개의 라즈베리 파이 4B(각각 4GB RAM)로 구성되어 있으며 자체 이름이 있습니다: clusperry ⚡️
초기 cloudconfig를 사용하여 미니 SD 카드에 플래시할 Linux 이미지를 생성하는 간단한 GUI 도구를 만들었습니다. 여기에서 확인할 수 있습니다: https://github.com/nullxx/clusperry-installer .
노드 설정
https://github.com/nullxx/clusperry-installer/releases/에서 릴리스를 다운로드하십시오(현재 macOS용으로만 컴파일됨).
1. 노드 운영 체제를 선택합니다.
2. 구성으로 각 노드를 구성합니다.
3. OS 이미지 다운로드
4. 이미지 쓰기
5. 생성된 이미지 열기
k3s로 쿠버네티스 설치
이를 위해 ansible을 사용할 것입니다. 모든 설치 작업을 보다 쉽게 수행할 수 있습니다.
다음 저장소를 사용하겠습니다: https://github.com/k3s-io/k3s-ansible
저장소 복제
git clone https://github.com/k3s-io/k3s-ansible.git
복제된 저장소에 들어가기
cd k3s-ansible
샘플에서 인벤토리 만들기
cp -R inventory/sample inventory/my-cluster
인벤토리/my-cluster/hosts.ini 편집
nano inventory/my-cluster/hosts.ini
[master]
192.168.1.100
[node]
192.168.1.101
192.168.1.102
192.168.1.103
192.168.1.104
192.168.1.105
[k3s_cluster:children]
master
node
인벤토리/my-cluster/group_vars/all.yml 편집
내 경우에는 ansible_user
를 ubuntu
로 편집합니다.
---
k3s_version: v1.17.5+k3s1
ansible_user: ubuntu
systemd_dir: /etc/systemd/system
master_ip: "{{ hostvars[groups['master'][0]]['ansible_host'] | default(groups['master'][0]) }}"
extra_server_args: ""
extra_agent_args: ""
힘을 준비하십시오!
ansible-playbook을 실행하여 노드에 k8s를 설치합니다.
ansible-playbook site.yml -i inventory/my-cluster/hosts.ini
컴퓨터에 kubectl 설치
제 경우에는 macOS
brew install kubectl
마스터 노드에서 kubectl 구성 가져오기
scp [email protected]:~/.kube/config ~/.kube/config
설치를 확인합니다.
모든 노드가 STATUS '준비' 상태인지 확인
kubectl get nodes
테스트 배포
테스트를 위한 로컬 DNS 항목 생성
sudo echo "192.168.1.100 test.com" >> /etc/hosts
k3s와 함께 기본적으로 설치되기 때문에 traefik을 사용하겠습니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
name: nginx-service
spec:
ports:
- port: 80
name: http
selector:
name: nginx-deployment
--------
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: "test.com"
http:
paths:
- path: /
backend:
serviceName: nginx-service
servicePort: 80
팟(Pod)이 작동하는지 확인하십시오.
kubectl get pods
브라우저에서 http://test.com으로 이동합니다.
curl http://test.com
작동합니다!
대청소
test.com
에서 /etc/hosts
줄을 제거해야 합니다.
영구 저장
2부 사용 가능
Reference
이 문제에 관하여(라즈베리 파이 4B 쿠버네티스 클러스터), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/nullxx/raspberry-pi-4b-kubernetes-cluster-3l9a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
git clone https://github.com/k3s-io/k3s-ansible.git
cd k3s-ansible
cp -R inventory/sample inventory/my-cluster
nano inventory/my-cluster/hosts.ini
[master]
192.168.1.100
[node]
192.168.1.101
192.168.1.102
192.168.1.103
192.168.1.104
192.168.1.105
[k3s_cluster:children]
master
node
---
k3s_version: v1.17.5+k3s1
ansible_user: ubuntu
systemd_dir: /etc/systemd/system
master_ip: "{{ hostvars[groups['master'][0]]['ansible_host'] | default(groups['master'][0]) }}"
extra_server_args: ""
extra_agent_args: ""
ansible-playbook site.yml -i inventory/my-cluster/hosts.ini
brew install kubectl
scp [email protected]:~/.kube/config ~/.kube/config
kubectl get nodes
테스트를 위한 로컬 DNS 항목 생성
sudo echo "192.168.1.100 test.com" >> /etc/hosts
k3s와 함께 기본적으로 설치되기 때문에 traefik을 사용하겠습니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
name: nginx-service
spec:
ports:
- port: 80
name: http
selector:
name: nginx-deployment
--------
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: "test.com"
http:
paths:
- path: /
backend:
serviceName: nginx-service
servicePort: 80
팟(Pod)이 작동하는지 확인하십시오.
kubectl get pods
브라우저에서 http://test.com으로 이동합니다.
curl http://test.com
작동합니다!
대청소
test.com
에서 /etc/hosts
줄을 제거해야 합니다.영구 저장
2부 사용 가능
Reference
이 문제에 관하여(라즈베리 파이 4B 쿠버네티스 클러스터), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nullxx/raspberry-pi-4b-kubernetes-cluster-3l9a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)