클라우드 엔지니어/클라우드 캠프과정

쿠버네티스 환경셋팅( kubernetes 설치 1.22)

해아's 2022. 10. 13. 13:32

쿠버네티스 설치 (도커방식 쿠버네티스 1.22.5)

 

가상머신 3대 준비

호스트이름	CPU	RAM 			ip
master		2	4	 	192.168.179.100
node1		2	4	 	192.168.179.110
node2		2	4	 	192.168.179.120

공통설정

-방화벽 허용

-리눅스 시스템들어오는 패킷을 iptables 에서 관리하게 설정(켜기)

셋리눅스(로컬방화벽 끄기)

firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=2379-2380/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10251/tcp
firewall-cmd --permanent --add-port=10252/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --reload
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

setenforce 0

sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

init 6

hosts 설정 변경

vi /etc/hosts
192.168.179.100  master
192.168.179.110  node1
192.168.179.120  node2

 

3대 모두 도커 설치

(1) centos에 설치
yum install -y yum-utils 
yum-config-manager    --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-nightly
yum-config-manager --enable docker-ce-test
yum install -y docker-ce docker-ce-cli containerd.io --allowerasing

mkdir /etc/docker

cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF

systemctl daemon-reload
systemctl restart docker
systemctl enable docker

 

#쿠버네티스에서 iptables 설정을 할수있게 설정

firewall-cmd --add-masquerade --permanent
firewall-cmd --reload


cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system	#확인하는 명령어, 위 내용이 추가되어 있어야 함

#쿠버네티스 레포지터리 설정 한후 설치

	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
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
EOF


dnf install -y kubelet-1.22.5 kubeadm-1.22.5 kubectl-1.22.5 --disableexcludes=kubernetes

#쿠버네티스 재시작
#쿠버네티스 서비스 등록
systemctl enable kubelet
systemctl start kubelet

#쿠버네티스 컨테이너들이 스왑에 들어가있으면 다시 불러올때 느려서 스왑을 끄는 명령어를 사용한다

#스왑을 꺼도 재부팅시 다시 살아남 그래서 부팅시 스왑을 못불러오게 꺼야함

#스왑부분 주석

swapoff -a

vi /etc/fstab
/dev/mapper/cl-swap none swap defaults 0 0	이걸 다음처럼 변경, 주석 처리
#/dev/mapper/cl-swap none swap defaults 0 0

 

==========여기까지가 공통설정임===========================

 

마스터설정

쿠버네티스 에서 내가 마스터 로 사용하겟다고 명령어와 가상네트워크 대역 설정

 master + node1 + node2 (이녀석끼리만 사용하는 네트워크 대역을 생성함)

6) 마스터 설정
      [1] master	
	kubeadm init --pod-network-cidr 192.168.1.0/24

	mkdir -p $HOME/.kube
	cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
	chown $(id -u):$(id -g) $HOME/.kube/config


	kubectl get nodes 로 확인, 일단 마스터만 나옴

	
	dnf -y install wget 
	wget https://docs.projectcalico.org/manifests/calico.yaml

	vi calico.yaml > 4551라인
	            # - name: CALICO_IPV4POOL_CIDR
	            #   value: "192.168.0.0/16"

	            - name: CALICO_IPV4POOL_CIDR
	              value: "192.168.2.0/24"


	
	kubectl apply -f calico.yaml

쿠버네티스는 외부네트워크 연결은 다른데서 만들어둔 플러그인을 이용한다

들여쓰기 중요!!!

 

kubeadm init --pod-network-cidr 192.168.1.0/24

이후 노드에서 접속할수 있는 키값이 나오는데 저장해둬야한다!!!!

7) 워커 설정
      [2] node1
      [3] node2
	firewall-cmd --zone=public --permanent --add-port={10250,30000-32767}/tcp
	firewall-cmd --reload
    
    #마스터에서 나온 노드와 연결하는 명령어를 실행

 

 

최종결과

 

참고자료

 

728x90
반응형