오늘은 쿠버네티스 설치 및 환경 구성(ubuntu 20.04)을 포스팅하려고 합니다.
이번 포스팅은 ubuntu 20.04를 기준으로 하기 때문에
ubuntu가 아닌 CentOS이신분들이라면 아래 링크를 통해
CentOS 설치 버전을 참고해주시면 감사하겠습니다.
[Develope/Kubernetes] - [Kubernetes] 쿠버네티스 설치 및 환경구성(CentOS 7.9)
[Kubernetes] 쿠버네티스 설치 및 환경구성(CentOS 7.9)
오늘은 CentOS7.9에서 쿠버네티스(kubernetes) 설치 및 환경구성에 대한 포스팅을 하려고 합니다. 필자 또한 쿠버네티스(kubernetes) 공부를 하면서 진행한 내용이기 때문에 개념적인 내용 보다는 쿠버네
bono915.tistory.com
1. VirtualBox를 이용하여 vm(ubuntu 20.04) node 구성
필자는 VirtualBox를 이용하여 3개의 VM을 다음 표와 같이 구성하였습니다.
(VirtualBox가 아닌 다른 vm 또는 host server여도 무관합니다.)
HOSTNAME | IP | ROLE | RESOURCE |
k8s-master | 192.168.1.5 | control-plane, master | disk(30G), cpu(2), mem(2G) |
k8s-worker1 | 192.168.1.6 | worker | disk(30G), cpu(2), mem(2G) |
k8s-worker2 | 192.168.1.7 | worker | disk(30G), cpu(2), mem(2G) |
2. Kubernetes를 사용하기 위한 사전 세팅
1) apt 패키지 업데이트
# sudo apt-get update
# sudo apt-get upgrade
# sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
2) swap disable
# sudo swapoff -a && sudo sed -i '/swap/s/^/#/' /etc/fstab
3) 방화벽 예외 설정
# sudo systemctl stop firewalld
# sudo systemctl disable firewalld
4) hosts 설정
# hostnamectl set-hostname k8s-master
(각 노드별로 알맞게 hostname 지정)
# cat <<EOF >> /etc/hosts
192.168.1.5 k8s-master
192.168.1.6 k8s-worker1
192.168.1.7 k8s-worker2
EOF
3. Docker 설치
1) Docker 공식 GPG key 추가
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
2) Docker를 stable 버전으로 설치하기 위한 명령어 실행
# echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
3) Docker 엔진 설치
# sudo apt-get update
# sudo apt-get install docker-ce docker-ce-cli containerd.io
4) daemon.json 생성
# sudo mkdir /etc/docker
# 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
5) Docker 서비스 등록 및 실행
# sudo systemctl enable docker
# sudo systemctl start docker
4. Kubernetes 설치
1) iptable 설정
# cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
# cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
2) Kubernetes 저장소 업데이트 및 패키지 추가
# sudo apt-get update
# sudo apt-get install -y apt-transport-https ca-certificates curl
3) 구글 클라우드 public key 다운로드
# sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
4) Kubernetes 저장소 추가
# 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
5) 저장소 업데이트 및 kubelet, kubeadm, kubectl 설치
# sudo apt-get update
# sudo apt-get install -y kubelet kubeadm kubectl
# sudo apt-mark hold kubelet kubeadm kubectl
6) Kubernetes 서비스 등록 및 실행
# sudo systemctl enable kubelet
# sudo systemctl restart kubelet
5-1. master node 설정
1) node 초기화
* 결과값인 kubeadm join ~~~ 값 별도로 기록 (worker node에서 입력할 값)
# kubeadm reset
# kubeadm init --apiserver-advertise-address {vm-ip} --pod-network-cidr=192.168.0.0/16
2) 모든사용자가 kube 명령어를 사용할 수 있도록 설정
# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config
# export KUBECONFIG=/etc/kubernetes/admin.conf
3) weave CNI 플러그인 설치
weave 이외에도 다른 CNI third party가 많이 있기 때문에 다른 CNI를 설치해도 무관 합니다.
# kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
4) kubectl 자동 완성 설정
# source <(kubectl completion bash)
# echo "source <(kubectl completion bash)" >> ~/.bashrc
5-2 worker node 설정
1) kubeadm join
* k8s-master에서 kubeadm join ~~ 기록한 값 입력
kubeadm join 192.168.1.5:6443 --token 7nck59.l95eq142d0oqprie \
--discovery-token-ca-cert-hash sha256:6b32c544c257d1e5387e56509b00a8fb8430cab82cc2acf5e50d150129ddca04
6. 결과 확인
master node에서 worker node들이 cluster join이 잘 되었는지 확인합니다.
각 node들이 잘 나타나 있고, Ready 상태라면 Kubernetes 구축이 완료됐다고 볼 수 있습니다..
# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
kube-master Ready control-plane 3d6h v1.24.2 192.168.1.5 <none> Ubuntu 20.04.4 LTS 5.13.0-52-generic containerd://1.6.6
kube-worker1 Ready <none> 3d6h v1.24.2 192.168.1.6 <none> Ubuntu 20.04.4 LTS 5.13.0-52-generic containerd://1.6.6
kube-worker2 Ready <none> 3d6h v1.24.2 192.168.1.7 <none> Ubuntu 20.04.4 LTS 5.13.0-52-generic containerd://1.6.6
* ETC
VirtualBox로 node들을 구성했을 경우 네트워크 어댑터가 NAT로 되어있다면, INTERNAL-IP가 모두 같은
IP로 되어있어서 문제가 될 수 있습니다. 해당 이슈가 있다면, 아래 링크를 통해 해결하실 수 있습니다.
[Develope/Kubernetes] - [Kubernetes] VirtualBox Node INTERNAL-IP 설정 방법
[Kubernetes] VirtualBox Node INTERNAL-IP 설정 방법
오늘은 Kubernetes VirtualBox Node INTERNAL-IP 설정 방법에 대해 포스팅하려고 합니다. VirtualBox의 사용하여 Kubernetes를 설치할 경우 NAT 어댑터는 enp0s3(10.0.2.15) 호스트 전용 어댑터..
bono915.tistory.com
참고 - https://confluence.curvc.com/pages/releaseview.action?pageId=98048155
지금까지 kubernetes 쿠버네티스 설치 및 환경 구성(ubuntu 20.04)에 대한 포스팅이었습니다.