본문으로 바로가기

쿠버네티스 설치

category Kubernetes 2021. 6. 3. 01:43
반응형

쿠버네티스 클러스터를 직접 구성하는 도구

kubeadm

쿠버네티스에서 공식 제공하는 클러스터 생성/관리 도구

kubespray 

쿠버네티스 클러스터를 배포하는 오픈소스 프로젝트

다양한 형식으로 쿠버네티스 클러스터 구성가능

온프레미스에서 상용 서비스 클러스터 운영시 유용

다양한 CNI 제공

CNI (Container Network Interface)

Container간 통신을 지원하는 VxLan Pod Network 라고도 부름

다양한 종류의 플러그 인이 존재(플라넬, 칼리코, 위브넷 등등)

한개의 CNI 플러그인이 반드시 존재해야 Pod와 Pod 간의 통신이 가능하다.

 

쿠버네티스 클러스터 구성

출처 : https://kubernetes.io/docs/concepts/overview/components/

Control plane(Master node)

워커 노드들의 상태를 관리하고 제어

single master

multi master(3, 5개의 master nodes)

 

Worker node

도커 플랫폼을 통해 컨테이너를 동작하며 실제 서비스 제공

 

실습 환경을 Centos7 마스터노드 1개 워커노드 2개로 하려고 한다.

각자 Docker 설치 완료 후 쿠버네티스를 설치해 준다.

3대의 vmware 준비 각자의 호스트네임으로 구분지어 줬다.

쿠버네티스 설치(공식 홈페이지 참고https://kubernetes.io/)

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

kubeadm을 이용하여 설치할 경우 권고 사항.

 

설치 전 환경설정

1) swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab ( swap disabled 시켜주는 커맨드)

 

2) Letting iptables see bridged traffic

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

                             

sysctl --system

 

3)방화벽 비활성화

systemctl stop firewalld 

systemctl disable firewalld

 

4)Set SELinux in permissive mode (effectively disabling it)

setenforce 0

sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

 

환경 구성이 끝났다면 kubeadm, kubelet, kubectl을 설치해준다.

kubeadm 쿠버네티스 전체를 관리해주고 운영해줌
kubelet 컨테이너를 조작해주고 마스터와 통신할 때 사용
kubectl 쿠버네티스에게 명령어를 사용해 통신

 

 

설치 (Red Hat 계열)

/etc/yum.repos.d/kubernetes.repo 파일 등록

[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl

 

 

sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

sudo systemctl enable --now kubelet

 

 

 

 

마스터 - 워커 클러스터 구성

1) 마스터 설정

kubeadm init --pod-network-cidr [네트워크대역]/24 

 

kubeadm token 조회 그리고 사용하기

kubeadm init을 처음 진행 하였을 시 해당 클러스터에 join할 수 있는 토큰을 얻을 수 있다. 

이 값을 기록해 놓지 않았다면

kubeadm token list로 token 값을 다시 조회할 수 있다.

해쉬 값을 다시 조회하려면

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' 

위의 명령어로 해쉬 값을 확인 할 수 있다.

 

 

2) 환경변수 설정. kubectl 명령어를 사용할 수 있게.

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config  

 

kubectl 자동완성 

bash-completion 설치

yum install bash-completion


수동으로 source
source /usr/share/bash-completion/bash_completion


자동완성 활성화 

echo 'source <(kubectl completion bash)' >>~/.bashrc

자동완성 스크립트 추가

kubectl completion bash >/etc/bash_completion.d/kubectl

 

 

3) 워커에서 적용

워커에서 마스터 클러스터에 조인하는 법. (init 성공시 나오는 값을 그대로 복사 & 붙여넣기 해주면 된다.)

kubeadm join [마스터 ip]:6443 --token [마스터 토큰] --discovery-token-ca-cert-hash sha256:[마스터 해쉬값]

 

 

4)Pod network add-on

Weabe Net works 설치

 

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

 

5) 확인

kubectl get nodes

워커 1,2 잘뜬다.

 

반응형