ABTCEFG♪ 안녕하세요, 여러분!
BTC_김쿼카입니다.
이전 포스팅까지는 인프라 기초에 대해 배우는 시간이었다면 이번 포스팅부터는 저희와 같이 차근차근 쿠버네티스를 해볼 거에요! 그럼 시작해볼까요?
먼저 AWS console에 접속해주세요! 저는 기존에 미리 만들어두었던 test-vpc에서 진행하도록 할게요.
Chapter 1) EC2 생성
EC2 - Instances - Launch Instance를 클릭한 후 ec2 3대 만들기
[구성]
- Master(Control Plane), Worker node 2대
- AMI : Ubuntu 20.04
- Spec : t3 small 2 Core, 2 RAM
1-1) ami 이미지 선택
1-2) Instance type 설정 및 ssh 접속을 위한 key pair 생성
1-3) 보안 그룹 설정
현재 창은 그대로 두시고 검색 창에서 VPC 입력 후 새 탭으로 VPC 창을 띄워주세요.
security - security groups 에서 새 규칙을 만든 후 Inbound 포트 : 22, 2022, 6443 을 허용해줍니다.
참고로 저는 test-sg라고 네이밍을 정했답니다.
보안 그룹인데 0.0.0.0/0 로 모든 걸 허용해주면 보안 사고가 날 수도 있겠죠? source는 My IP로 설정해주세요!
Select existing security group을 클릭하고 새로고침 한 번 누른 후 만들어진 보안그룹을 선택하면 인스턴스 생성을 위한 설정은 끝이 납니다.
Launch를 눌러 인스턴스를 만들면 끝!
Chapter 2) k8s 구성
2-1) SSH 접속 포트 변경
test 환경에서도 보안 상 ssh 22번 포트를 임의의 다른 포트로 변경해서 사용해야 하는데요! 제일 먼저 인스턴스 접속 후 ssh 접속 포트 변경하는 것부터 진행해줄게요.
$ sudo sed -i 's/#Port 22/Port 2022/' /etc/ssh/sshd_config
$ sudo systemctl restart sshd
$ sudo apt install net-tools
$ netstat -tnlp # tcp6 :::2022로 변경된 것 확인
변경했다면 sg의 22번 포트를 삭제하고 변경한 포트로 재접속 해주시면 됩니다.
2-2) Hostname 변경
각각의 ec2는 master와 worker 노드 역할을 하게 될 텐데 기존 이름을 그대로 두면 헷갈리니까 접속해서 hostname을 변경해주는 작업을 아래와 같이 진행합니다.
$ sudo hostnamectl set-hostname master #node1 , node2
$ sudo reboot
$ cat /etc/hostname; hostname
2-3) Master와 Worker에 동일하게 진행해주시면 됩니다.
# docker 설치 <https://docs.docker.com/engine/install/ubuntu/>
$ sudo apt-get install \\
ca-certificates \\
curl \\
gnupg \\
lsb-release
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ echo \\
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] <https://download.docker.com/linux/ubuntu> \\
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io -y
$ sudo docker version
$ cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
$ sudo systemctl enable --now docker
# k8s 설치
$ sudo apt-get upgrade -y
$ sudo apt-get install -y apt-transport-https ca-certificates curl
$ sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
$ echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] <https://apt.kubernetes.io/> kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
$ sudo apt-get update
$ sudo apt-get install -y kubelet kubeadm kubectl
$ sudo apt-mark hold kubelet kubeadm kubectl
$ sudo systemctl daemon-reload
$ sudo systemctl restart kubelet
$ kubeadm version
$ kubelet --version
$ kubectl version
2-4) Master에서만 진행
$ sudo kubeadm init
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ kubectl apply -f "<https://cloud.weave.works/k8s/net?k8s-version=$>(kubectl version | base64 | tr -d '\\n')"
$ kubectl get nodes # READY 확인
$ source <(kubectl completion bash)
$ echo "source <(kubectl completion bash)" >> ~/.bashrc
$ kubeadm token list # master token
$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' # discovery token
2-5) Worker에서만 진행
# worker node init 전까지 같음.
$ sudo rm /etc/containerd/config.toml
$ sudo systemctl restart containerd
$ sudo kubeadm join :6443 \\
--token \\
--discovery-token-ca-cert-hash sha256:
*** Troubleshooting
# 만약 컨테이너 런타임 못 찾고 있다면
$ sudo rm /etc/containerd/config.toml
$ sudo systemctl restart containerd
# cni 제거하려면
$ kubectl delete -f ~
그렇다면 최종 결과는 다음과 같습니다!
다음 시간부터는 오늘 포스팅을 바탕으로 구성된 환경에서 실습을 진행해보도록 할게요.
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
[AWS] IAM Type Certificate Upload (0) | 2022.07.01 |
---|---|
AWS KMS란? (0) | 2022.06.30 |
[AWS] 도메인 등록 (0) | 2022.06.27 |
Aws site-to-site VPN연결 (0) | 2022.06.27 |
[AWS] EC2 (0) | 2022.06.24 |
댓글