라즈베리 파이 4B 쿠버네티스 클러스터

저는 분산 컴퓨팅을 좋아합니다. 아름답습니다. 더 많은 전력이 필요한 경우 클러스터에 노드를 추가하기만 하면 됩니다! 그냥. 중단 시간 없이 포드를 다시 시작합니다. 수평 포드 자동 크기 조절기...

클러스터를 생성하려면 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. 구성으로 각 노드를 구성합니다.


  • IP
  • WIFI(또는 이더넷)
  • 호스트 이름
  • SSH 키


  • 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_userubuntu로 편집합니다.

    ---
    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부 사용 가능

    좋은 웹페이지 즐겨찾기