k8s 클러스터 직접 구성해보기_5

duckiee·2022년 11월 22일
0

k8s 클러스터 구성

목록 보기
5/11

이번 포스트는 쿠버네티스의 etcd 클러스터 생성 작업 입니다.

이전 시리즈와 같이, 작업에 사용되는 명령어는 아래 깃허브에서 확인 가능합니다.

etcd

  • 분산 시스템에서 사용하는 분산형 키-값 저장소
  • Kubernetes 클러스터의 모든 상태를 저장함
    ex: 클러스터 노드 개수, pod의 생성 및 변경 상태

k8s pod 생성과정 시퀀스 다이어그램
이미지 출처 : https://miro.medium.com/max/4800/1*WDJmiyarVfcsDp6X1-lLFQ.png

  1. Prerequisites : 마스터 노드 서버 (controller-0~2) 서버에 접속하여 작업 준비

  2. Download and Install the etcd Binaries : etc 바이너리 파일 다운로드하여 /usr/local/bin/ 경로에 이동 합니다.

$ wget -q --show-progress --https-only --timestamping \
  "https://github.com/etcd-io/etcd/releases/download/v3.4.15/etcd-v3.4.15-linux-amd64.tar.gz"
  
$ tar -xvf etcd-v3.4.15-linux-amd64.tar.gz
$ sudo mv etcd-v3.4.15-linux-amd64/etcd* /usr/local/bin/
  1. Configure the etcd Server : etcd를 systemctl로 실행할 수 있도록 관련 디렉터리 생성
  • 2번 포스트에서 생성했던 kubernetes.pem, kubernetes.pem, ca.pem 파일이 마스터 노드 서버 (controller-0~2) 서버에 있어야 합니다.
$ sudo mkdir -p /etc/etcd /var/lib/etcd
$ sudo chmod 700 /var/lib/etcd
$ sudo cp ca.pem kubernetes-key.pem kubernetes.pem /etc/etcd/

$ INTERNAL_IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)

$ ETCD_NAME=$(curl -s http://169.254.169.254/latest/user-data/ \
  | tr "|" "\n" | grep "^name" | cut -d"=" -f2)
echo "${ETCD_NAME}"
  • 아래 명령어를 사용하여 etc/systemd/system/etcd.service 파일 생성
$ cat <<EOF | sudo tee /etc/systemd/system/etcd.service
[Unit]
Description=etcd
Documentation=https://github.com/coreos

[Service]
Type=notify
ExecStart=/usr/local/bin/etcd \\
  --name ${ETCD_NAME} \\
  --cert-file=/etc/etcd/kubernetes.pem \\
  --key-file=/etc/etcd/kubernetes-key.pem \\
  --peer-cert-file=/etc/etcd/kubernetes.pem \\
  --peer-key-file=/etc/etcd/kubernetes-key.pem \\
  --trusted-ca-file=/etc/etcd/ca.pem \\
  --peer-trusted-ca-file=/etc/etcd/ca.pem \\
  --peer-client-cert-auth \\
  --client-cert-auth \\
  --initial-advertise-peer-urls https://${INTERNAL_IP}:2380 \\
  --listen-peer-urls https://${INTERNAL_IP}:2380 \\
  --listen-client-urls https://${INTERNAL_IP}:2379,https://127.0.0.1:2379 \\
  --advertise-client-urls https://${INTERNAL_IP}:2379 \\
  --initial-cluster-token etcd-cluster-0 \\
  --initial-cluster controller-0=https://10.0.1.10:2380,controller-1=https://10.0.1.11:2380,controller-2=https://10.0.1.12:2380 \\
  --initial-cluster-state new \\
  --data-dir=/var/lib/etcd
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF
  1. Start the etcd Server : 마스터 노드 서버 (controller-0~2) 서버에서 생성된 etcd 시작 명령어
$ sudo systemctl daemon-reload
$ sudo systemctl enable etcd
$ sudo systemctl start etcd
  • systemctl로 etcd 상태 확인
  1. Verification : 마스터 노드 서버 (controller-0~2) 서버에서 etcd 클러스터 맴버 리스트를 출력
$ sudo ETCDCTL_API=3 etcdctl member list \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/etcd/ca.pem \
  --cert=/etc/etcd/kubernetes.pem \
  --key=/etc/etcd/kubernetes-key.pem

profile
DevOps로 진화하기

0개의 댓글