Kubernetes 설치 및 설정
시나리오
- 시나리오라고 할 것도 없다 아래 그림과 같이 두개의 노드에 각각 Master, Worker를 설치할 것이다.
조건
사양
Master
RAM : 2GB
CPU : 2개 이상
방화벽
Master
Worker
워커노드에 생성되는 각각의 서비스에 접근하기위한 port들이다
예를 들어 Kubernetes WorkerNode의 IP가 1.0.0.10 이고 생성된 서비스의 포트가 30001인 경우
외부에서는 1.0.0.10:30001 로 해당 서비스에 접근하게 된다.
Selinux
- /etc/sysconfig/selinux를 아래 그림과 같이 편집하여 selinux를 off한다 공식문서에는 다른 방법으로 했지만
일단 설치 목적으로 다음과 같이 진행한다
- Master, Worker 양쪽 모두에서 진행
*공식문서
설치
Master, Worker 공통 작업
- 이하 Master, Worker 모두에서 명령어 입력
1. /etc/hosts 편집
2. Enable br_netfilter Kernel Module
# modprobe br_netfilter
# echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
# modprobe br_netfilter
3. Disable Swap
1) swapoff -a
2) vi /etc/fstab
4. Docker
1) # yum install -y docker
2) # systemctl start docker && systemctl enable docker
5. Kubernetes
1) # cat <<EOF > /etc/yum.repos.d/kubernetes.repo
6. Change the cgroup-driver
1) # sed -i 's/cgroup-driver=systemd/cgroup-driver=cgroupfs/g' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
2) # systemctl daemon-reload
3) # systemctl restart kubelet
Master Node
- 이하 Master Node에서 명령어 입력
1. 클러스터 구성
# kubeadm init --apiserver-advertise-address=1.0.0.100 --pod-network-cidr=10.244.0.0/16
- advertise-address : Master Node의 Ip를 입력한다
- pod-network : pod들이 사용할 내부 네트워크 대역을 입력한다. (무조건 10.244.0.0/16 이어야 함!)
*Cluster 가입 명령어
- 위의 kubeadm init 명령어를 입력하고 클러스터 구성이 완료되면 하단에 노드들이 가입하기 위해 사용할 명령어를 알려준다
이것을 복사해 두어야 한다.
2. Non-root user Kubectl 사용가능 구성
$ mkdir -p $HOME/.kube
3. Pod 네트워크 구성
- Pod가 서로 통신할 수 있도록 Network Add-on을 설치한다
- # kubectl apply -f "add-on.yaml"
# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Worker Node
- 이하 Worker Node에서 명령어를 입력
1. Cluster 가입
- 위의 Cluster 생성시 알려주었던 명령어를 Worker Node에서 입력한다
# kubeadm join 1.0.0.100:6443 --token 7itg3w.ap7wjrzdyrflhyi4 --discovery-token-ca-cert-hash sha256:0898748dce7b257fe15807b95a87f6aa19fd0303ff9ea0c21283567a5e34cf3c
Test
Master Node에서 아래 명령어를 입력하여 노드가 클러스터에 연결되었음을 확인한다
# kubectl get nodes
ERROR
1. localhost:8080 was refused
아래 명령어 입력시 해결
$ mkdir -p $HOME/.kube
2. worker Node NotReady에러
# kubectl describe nodes 를 입력하여 노드들의 자세한 정보를 확인한다
여러가지 원인이 있지만 필자의 경우 pod에서 사용할 network 설정을 해주지 않아 발생했다
=> # kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
참조
kubernetes 공식 - https://kubernetes.io/docs/setup/independent/install-kubeadm/
블로그 - https://likefree.tistory.com/12
'Infra > kubernetes' 카테고리의 다른 글
Kubernetes - pod 관련 명령어 (0) | 2019.01.31 |
---|---|
Kubernetes - pod error 정리 - 추가중 (0) | 2019.01.31 |
Kubernetes - Kubernetes 사용법 (0) | 2019.01.27 |
Kubernetes - 쿠버네티스(Kubernetes) 란? - 수정중(네임스페이스) (0) | 2019.01.27 |