본문 바로가기
IT study/Kubernetes

02. K8S 구축하기

by 핸조 2022. 12. 6.

1. k8s 실습에 사용 할 서버 및 구성

- manufacturer : DL20 Gen10

- OS : CentOS Linux release 7.9.2009 (Core)

- CPU : Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz

- Memory : 32G

 

- KVM 으로 master node 1대, worker node 2대 구성

- master node : k8s-master 

- worker node : k8s-node1, node2

 

* OS 설치 및 KVM 구성법은 생략

 

Control-Plane(master node) 와 worker node1,2 클러스터 구축 docker 공식 사이트를 참조 하였으니 간단하게 작성

참조 : http://docs.docker.com

 

Docker Documentation

 

docs.docker.com

 

# setp1. docker install - all system
# repo 구성
$ yum install yum-utils -y
$ yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

# step2. docker engine install
$ yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# step3. k8s install (k8s install 전 swap disable 필요)
# 1. swap disalbe
  $ swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
  
# 2. master, node 간 bridge 설정
  $ vi /etc/sysctl.d/k8s.conf 생성
     net.bridge.bridge-nf-call-ip6tables = 1
     net.bridge.bridge-nf-call-iptables = 1
  $ sysctl --system
  
# kubeadm, kubectl, kubelet install - (https://kubernetes.io))
cat << EOF | tee /etc/yum.repos.d/kubernetes.repo
> [kubernetes]
> name=Kubernetes
> baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
> enabled=1
> gpgcheck=1
> gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
> exclude=kubelet kubeadm kubectl
> EOF

# SElinux disable
$ sed -i 's/^SELINUX=enforcing$/SELINUX=disalbe/' /etc/selinux/config # config 파일 vi 에디터로 수정하는거랑 같음.

$ yum install kubelet kubeadm kubectl --disableexcludes=kubernetes -y
$ systemctl enable --now kubelet

# step4. install 후 초기화 및 명령어 사용 허용
mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
  
$ kubeadm init ## control-plane(master) 초기화 
// init 시 runtime error 발생 시 ## 
// K8S 1.24v Upgrade 되면서 docker 엔진과 containerd 엔진 충돌로 runtime 발생
// $ vi /etc/containerd/config.toml 
//  disabled_plugins=  주석처리
//  $ systemctl restart containerd

step5. pod network add-on ## node 간 통신 ((weavenet 사용))
$ kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml

step6. control-plane, woker node join ## ((woker node 에서 진행))
$ kubeadm join control-plane ip:6443 --token ~~~~~
// init 작업과 동일한 runtime error 발생 시 config 수정
// control plane 작업 하면서 생성된 token 으로 join 시 error 발생 시

$ kubeadm token create --print-join-command

kubeadm join localhost:6443 --token 0jc4gf.7iqwrkgkrzpzow38 --discovery-token-ca-cert-hash ~~~

$ kubeadm token list

 

 

 

## K8s cli 자동완성 설정 ##
yum install bash-completion // 자동완성 기능 사용을 위한 필수 패키지 설치

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

* 다음 차수는  kubectl, pod 생성 하는 실습 후 정리 예정.

'IT study > Kubernetes' 카테고리의 다른 글

05. yaml 템플릿 및 API Version  (0) 2022.12.08
04. K8S namespace 생성  (0) 2022.12.08
03. kubectl command 및 pod 생성  (0) 2022.12.07
01. kubernetes 사용을 위한 아키텍쳐  (0) 2022.11.26