오늘은 CentOS7.9에서 쿠버네티스(kubernetes) 설치 및 환경구성에 대한 포스팅을 하려고 합니다.
필자 또한 쿠버네티스(kubernetes) 공부를 하면서 진행한 내용이기 때문에
개념적인 내용 보다는 쿠버네티스(kubernetes)를 구축하기 위한 메뉴얼 단위의 내용으로 진행하도록 하겠습니다.
쿠버네티스(kubernetes)를 구축하는 내용들은 구글링을 하면 많이 나오긴 하지만
오류도 많고 제대로 구축되지 않는 확률이 높기 때문에
지속적인 테스트를 통하여 한번에 구축할 수 있는 내용을 정리하였기 때문에
아래 정리된 내용을 참고하시면 문제 없이 쿠버네티스(kubernetes)를 구축 하실 수 있습니다.
1. VirtualBox를 이용하여 vm(CentOS7.9) node 구성
필자는 VirtualBox를 이용하여 3개의 VM을 다음 표와 같이 구성하였습니다.
HOSTNAME | IP | ROLE | RESOURCE |
k8s-master | 192.168.56.191 | control-plane, master | disk(30G), cpu(2), mem(2G) |
k8s-worker1 | 192.168.56.192 | worker | disk(30G), cpu(2), mem(2G) |
k8s-worker2 | 192.168.56.193 | worker | disk(30G), cpu(2), mem(2G) |
2. kubernetes를 사용하기 위한 CentOS 셋팅
1) selinux 비활성화
# setenforce 0
# sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
2) swap 비활성화
# swapoff -a
# sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
3) 방화벽 비활성화
# systemctl disable firewalld
# systemctl stop firewalld
4) iptables 커널 설정
# cat <<EOF>> /etc/modules-load.d/k8s.conf
br_netfilter
EOF
# cat <<EOF>> /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# sysctl --system
5) hosts 설정
# hostnamectl set-hostname k8s-master
# cat <<EOF >> /etc/hosts
192.168.56.191 k8s-master
192.168.56.192 k8s-worker1
192.168.56.193 k8s-worker2
EOF
(6) centos package update
# yum update -y
3. kubernetes 설치
1) kubernetes yum repository 설정
# cat <<EOF>> /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
2) docker 설치
# curl -s https://get.docker.com | sudo sh
# systemctl enable docker
# systemctl start docker
3) docker daemon.json 편집
# cat <<EOF>> /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
# service docker restart
4) kubernetes 패키지 설치
# yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
5) kubeadm config
# 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
6) kubelet 실행
# systemctl enable kubelet
# systemctl start kubelet
7) kubernetes 패키지 버전 정보 확인
# kubeadm version -o short
# kubectl version --short
# kubelet --version
5-1. master node 설정
1) kubeadm init
* 결과값인 kubeadm join ~~~ 값 별도로 기록 (worker node에서 입력할 값)
# kubeadm reset
# kubeadm init --apiserver-advertise-address {k8s-master IP} --pod-network-cidr=172.16.0.0/16
* Unable to connect to the server: x509: certificate is valid for ~~ 오류가 나타날 경우 아래 내용 다시 실행
# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config
2) Weave CNI 플러그인 설치
# kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
3) node 클러스터 참여 확인(worker node 설정 이후에 확인)
# kubectl get nodes
# kubectl get pods --all-namespaces
5-2. worker node 설정
1) kubeadm join
* k8s-master에서 kubeadm join ~~ 기록한 값 입력
# kubeadm reset
# kubeadm join 192.168.56.191:6443 --token v13fvs.463fdn9bx5bg33kl \
--discovery-token-ca-cert-hash sha256:97f2d614cca62121d61790ba08dc53209b52cb734cf204c62d74e4b695fbdca1
참조 - https://zunoxi.github.io/devops/2020/04/27/devops-k8s-install-k8s
참조 - https://sangchul.kr/77
지금까지 쿠버네티스(kubernetes) 설치 및 환경구성(CentOS 7.9)에 대한 포스팅 이였습니다.
'Develope > Kubernetes' 카테고리의 다른 글
[Kubernetes] kubevirt uploadproxy unexpected return value 502 에러 해결 방법 (0) | 2022.07.10 |
---|---|
[Kubernetes] VirtualBox Node INTERNAL-IP 설정 방법 (2) | 2022.07.07 |
[Kubernetes] Unable to read config path err="path does not exist, ignoring" path="/etc/kubernetes/manifests" 해결 방법 (0) | 2022.07.05 |
[Kubernetes] Kubevirt vm sample yaml (0) | 2022.06.14 |
[Kubernetes] Kubevirt 환경설정 및 vm 생성하기 (0) | 2022.06.10 |