본문 바로가기
Kubernetes

[ Kubernates ] 쿠버네티스 설치 (centos)

by 정윤재 2022. 10. 3.

1. VMWARE 로 VM 을 아래와 같이 설정 하였습니다.

 

- Master 서버

  아이피 : 192.168.100.134

  CPU : 2

  HDD : 30G

  hostname : kubectl-master

- Slave1 서버

  아이피 : 192.168.100.135

  CPU : 2

  HDD : 30G

  hostname : kubectl-slave1

- Slave2 섭버

  아이피 : 192.168.100.136

  CPU : 2

  HDD : 30G

  hostname : kubectl-slave2

 

[Centos 7 호스트 이름 변경 명령어]

 

https://shonm.tistory.com/663

 

[ LINUX ] centos7 hostname 변경

Cent OS 에서 hostname 을 변경 하기 shell> hostnamectl set-hostname [변경하고자 하는 hostname] (root 권한으로 실행 해야 함)

shonm.tistory.com

 

2. master, slave1, slave2 서버에 도커를 설치 한다.

 

https://shonm.tistory.com/664

 

[ DOCKER ] DOCKER 설치

CentOS 7 에서 Docker 설치 아래의 명령어 들은 root 권한으로 실행 #yum install -y yum-utils device-mapper-persistent-data lvm2 #yum-config-manager --add-repo https://download.docker.com/linux/centos/d..

shonm.tistory.com

 

3. selinux 설정을 permissive 로 변경 한다.

 

설정은 아래와 같이 하면 된다.

# setenforce 0

# vi /etc/selinux/config

에서 SELINUX= 부분을 permissive 로 변경함

 

4. iptable 설정은 아래와 같이 변경함

#cat <<EOF > /etc/sysctl.d/kubctl.conf

> net.bridge.bridge-nf-call-ip6tables = 1

> net.bridge.bridge-nf-call-iptables = 1

> EOF

#sysctl --system

 

 

5. Firewalld 를 비활성화함

 

#systemctl stop firewalld

#systemctl disable firewalld

 

 

6. 스왑 끄기

 

해당 세션에서 스왑 끄기

#swapoff -a

 

영구적으로 스왑 끄기

#vi /etc/fstab

 

에서 swap 관련된 행을 주석 처리함 (default 는 swap 을 사용하게 되어 있으므로)

 

 

7. 쿠버네티스 yum 설치

 

- 쿠버네티스 yum 레파지토리 설정

# vi /etc/yum.repos.d/kubernetes.repo

 

[kubernetes]

 

name=Kubernetes

 

baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64

 

enabled=1

 

gpgcheck=1

 

repo_gpgcheck=0

 

gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

 

exclude=kube*

 

- kubeadm 설치:

 

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

 

# systemctl enable kubelet && systemctl start kubelet

 

 

8. Kubctl 마스터 노드 설치

 

kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.100.134

 

--apiserver-advertise-address=192.168.100.134 부분은 마스터의 ip

 

 

[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1  ~~~ 가 나오면

 

#echo '1' > /proc/sys/net/ipv4/ip_forward

 

kubeadm init 시  curl -sSL http://IP:10248/healthz' failed with error 로 에러가 발생 할 경우

 

https://shonm.tistory.com/695 를 참고 하면 된다.

 

에러 발생시 위의 꺼를 확인 하시고 다시 kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.100.134 명령어 실행

 

kubeadm join 192.168.101.134:6443 --token of1ad0.3llpb5i5oea5qsqc \

--discovery-token-ca-cert-hash sha256:2f0dcc87a5307c492b63e7c6a12afac54e613875fbe11de988e41048eaa60567

 

Root 계정으로 kubectl 을 실행 시킬 것이므로 환경 변수를 .bash_profile 에 추가 한다

 

vi ~/.bash_profile

export KUBECONFIG=/etc/kubernetes/admin.conf

 

 

9. CNI 설치 (Container Network Interface)

 

이 글에서는 Flannel을 설치한다. 설치 명령어는 다음과 같다.

 

#kubectl apply -f https://github.com/coreos/flannel/raw/master/Documentation/kube-flannel.yml

 

마드터 노드 실행을 아래와 같이 확인 합니다.

- kubectl get pods --all-namespaces 로 pod 들의 상태를 파악

 

Running 이 아닌 경우

kubectl -n kube-system logs -f pod_name 으로 로그 파악 합니다.

 

10. worker 노드 들에 대한 설치

 

Master 에서 kubeadm init 해서 생겼던

kubeadm join 192.168.101.134:6443 --token of1ad0.3llpb5i5oea5qsqc \

--discovery-token-ca-cert-hash sha256:2f0dcc87a5307c492b63e7c6a12afac54e613875fbe11de988e41048eaa60567  

 

를 worker node 에서 실행 한다.

 

Master 에서 위에 join 을 실행 하기 전

[root@kubectl-master ~]# kubectl get nodes

NAME             STATUS   ROLES                  AGE   VERSION

kubectl-master   Ready    control-plane,master   11h   v1.23.5

 

Master 에서 위의 join 을 실행 한 후

[root@kubectl-master ~]# kubectl get nodes

NAME             STATUS   ROLES                  AGE   VERSION

kubectl-master   Ready    control-plane,master   11h   v1.23.5

kubectl-slave1   Ready    <none>

 

`

두번째 node join 후

[root@kubectl-master ~]# kubectl get nodes

NAME             STATUS   ROLES                  AGE     VERSION

kubectl-master   Ready    control-plane,master   11h     v1.23.5

kubectl-slave1   Ready    <none>                 7m23s   v1.23.5

kubectl-slave2   Ready    <none>                 52s     v1.23.5

 

 

 

 

Cluster 가 잘 되어 있는지 확인 하려고 하면

 

kubectl cluster-info 명령으로 확인 할 수 있다.

 

[root@kubectl-master ~]# kubectl cluster-info

Kubernetes control plane is running at https://192.168.101.134:6443

CoreDNS is running at https://192.168.101.134:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

 

 


댓글