공부하기싫어
article thumbnail

목차

     

    EC2 인스턴스 구성

    Name master1, master2, master3, worker1
    OS Ubuntu 22.04 LTS
    Type t3a.medium
    Storage 16gib
    SG allow all traffic
    etc default

     

    user data

    #!/bin/bash
    apt-get upgrade -y 
    apt-get dist-upgrade -y 
    apt-get update -y
    apt-get install vim -y
     

    key pair 는 기존에 만들어둔 것을 사용하였음

    화면 상 구분하기 쉽게 hostname 을 바꿔줬음

     

    master1 15.165.248.113(EIP) - 172.31.8.2
    master2 3.36.122.167 - 172.31.12.129
    master3 3.38.149.73 - 172.31.9.206
    worker 52.78.25.195 - 172.31.12.140

     

    Master1 node

    root 로 접속해서 실행

    설치 및 서비스 시작

    root@master1:~# swapoff -a
    root@master1:~# systemctl stop ufw && ufw disable && iptables -F

    hostname 에 특수문자가 포함될 시 RKE2 서버 설치/구동에 문제가 있을 수 있다고 함

    설치 및 활성화

    curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="server" sh -
    systemctl enable rke2-server.service

    EZPMP RKE1 을 통한 K8S 구축시, Gitlab <> K8S 연동시에 인증서 관련 오류가 발생하였으며
    (There was a problem authenticating with your cluster. Please ensure your CA Certificate and Token are valid), 이를 헷지하기 위해서, SAN (Subject Alternative Name)를 추가해서 해결.
    이를 위해서 /etc/rancher/rke2/config.yaml 에 tls-san 파라미터를 추가하여, first server node 구축진행

     

    ※ SAN 설정
    여기서는 SAN 예제 값으로, my-kubernetes-domain.com, another-kubernetes-domain.com 를 추가하는 것으로 진행

    mkdir -p /etc/rancher/rke2
    vim /etc/rancher/rke2/config.yaml
    tls-san:
      - my-kubernetes-domain.com
      - another-kubernetes-domain.com
     

    rke2-server 시작

    systemctl start rke2-server.service
     

    확인

    SAN 설정 확인

    openssl x509 -in /var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt -text

    SAN 값 추가 확인 (apiserver 인증서에 my-kubernetes-domain.comanother-kubernetes-domain.com 확인 가능), 인증서 저장 위치 (/var/lib/rancher/rke2/server/tls)

     

    “Node synced successfully” 메세지 나오면 설치 완료

    # systemctl status rke2-server.service
    # journalctl -u rke2-server -f
     

    kubeconfig 환경설정

    mkdir ~/.kube/
    cp /etc/rancher/rke2/rke2.yaml ~/.kube/config
    export PATH=$PATH:/var/lib/rancher/rke2/bin/
    echo 'export PATH=/usr/local/bin:/var/lib/rancher/rke2/bin:$PATH' >> ~/.bashrc
     

    Server Token 확인

    cat /var/lib/rancher/rke2/server/node-token
     

    Node 확인

     
    root@master1:/# kubectl get nodes
    NAME      STATUS   ROLES                       AGE   VERSION
    master1   Ready    control-plane,etcd,master   20m   v1.25.9+rke2r1

    Master-2,3 Node

     
    $ swapoff -a  (/etc/fstab swap comment out)
    $ systemctl stop ufw && ufw disable && iptables -F
    $ curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="server" sh -
    $ systemctl enable rke2-server.service
    $ mkdir -p /etc/rancher/rke2/

    2nd/3rd 노드에서 config.yaml 파일 생성

    # vim /etc/rancher/rke2/config.yaml
    server: https://15.165.248.113:9345
    token: K106352a960e0371e7cc1025d4742651bd9a7ea2c79d93754f8bc191fb7cbc13e7f::server:7f203956cfe34e9ef2a46cdd5e2b6dd0   
    tls-san:
      - my-kubernetes-domain.com
      - another-kubernetes-domain.com
     

    rke2-server 프로세스 구동 후, node 추가 확인 (5-10분소요)

    # systemctl start rke2-server.service
    # journalctl -u rke2-server -f
     

    하나씩 Ready 뜨는거 확인하고 추가했음

     

    Worker Node

    설치 및 서비스 시작

    # curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" sh -
    # mkdir -p /etc/rancher/rke2/
    # vi /etc/rancher/rke2/config.yaml
    server: https://<server>:9345
    token: ( Server Token )
    # node-name : (선택사항)

    확인

    systemctl enable rke2-agent.service
    systemctl start rke2-agent.service
    journalctl -u rke2-agent -f

    kubeconfig 설정

    export PATH=$PATH:/var/lib/rancher/rke2/bin/
    mkdir ~/.kube
    mv /var/lib/rancher/rke2/agent/kubelet.kubeconfig ~/.kube/config

     

    Rancher

    Cert-Manager 설치

    kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.9.2/cert-manager.yaml
    kubectl -n cert-manager rollout status deploy/cert-manager
    kubectl -n cert-manager rollout status deploy/cert-manager-webhook 
    kubectl get pods --namespace cert-manager

    HELM 설치

    $ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
    $ chmod 700 get_helm.sh
    $ ./get_helm.sh

    Rancher UI 배포 (cattle-system)

    kubectl create namespace cattle-system
    helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
    helm repo update
    helm search repo rancher-stable
    helm install rancher rancher-stable/rancher --namespace cattle-system --set hostname=15.165.248.113.nip.io --set global.cattle.psp.enabled=false

    (추가) helm install 명령 실행 시 “Error: INSTALLATION FAILED: execution error at (rancher/templates/validate-psp-install.yaml:4:5): The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding.” 오류가 발생하여 뒤에 --set global.cattle.psp.enabled=false 을 추가해줬음

     

    Rancher 접속

    15.165.248.113.nip.io 로 접속

    초기 비밀번호 확인
    비밀번호 재설정
    접속 확인

    'Kubernetes > Rancher' 카테고리의 다른 글

    Minikube Cluster with Rancher UI  (0) 2023.05.02
    [k8s-Rancher] 3. VMware 로 RKE2 k8s 클러스터 구축 (미완)  (0) 2023.05.02
    [k8s-Rancher] 2. Rancher desktop  (0) 2023.04.23
    [Rancher] 1. Rancher 이해  (0) 2023.04.18
    Rancher 시작하기  (1) 2023.04.17