쿠버네티스 클러스터를 직접 구성하는 도구
kubeadm
쿠버네티스에서 공식 제공하는 클러스터 생성/관리 도구
kubespray
쿠버네티스 클러스터를 배포하는 오픈소스 프로젝트
다양한 형식으로 쿠버네티스 클러스터 구성가능
온프레미스에서 상용 서비스 클러스터 운영시 유용
다양한 CNI 제공
CNI (Container Network Interface)
Container간 통신을 지원하는 VxLan Pod Network 라고도 부름
다양한 종류의 플러그 인이 존재(플라넬, 칼리코, 위브넷 등등)
한개의 CNI 플러그인이 반드시 존재해야 Pod와 Pod 간의 통신이 가능하다.
쿠버네티스 클러스터 구성
Control plane(Master node)
워커 노드들의 상태를 관리하고 제어
single master
multi master(3, 5개의 master nodes)
Worker node
도커 플랫폼을 통해 컨테이너를 동작하며 실제 서비스 제공
실습 환경을 Centos7 마스터노드 1개 워커노드 2개로 하려고 한다.
각자 Docker 설치 완료 후 쿠버네티스를 설치해 준다.
쿠버네티스 설치(공식 홈페이지 참고https://kubernetes.io/)
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-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
'Kubernetes' 카테고리의 다른 글
쿠버네티스 아키텍처 (0) | 2021.06.08 |
---|---|
Kubernetes (생성,삭제,확인,로그) (0) | 2021.06.08 |
Deployment 개념 및 yaml 파일로 작성 실습 (0) | 2021.06.07 |
쿠버네티스 클러스터 재구성(초기화) (0) | 2021.06.05 |
쿠버네티스란 ? (0) | 2021.06.03 |