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 호스트 이름 변경 명령어]
2. master, slave1, slave2 서버에 도커를 설치 한다.
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
'Kubernetes' 카테고리의 다른 글
Unable to locate package update (kubeadm 에서) 발생 시 해결책 (0) | 2023.04.16 |
---|---|
kubespray 로 kubernetes 설치 (ubuntu) (0) | 2023.03.31 |
[ Kubernates ] curl -sSL http://IP:10248/healthz' failed with error 발생 (0) | 2022.10.03 |
[ Kubernates ] NAMESPACE 설정 (0) | 2022.08.16 |
[ Kubernates ] storageClass 설정 , 확인 (0) | 2022.08.15 |
댓글