이어서 쿠버네티스를 설치해본다.

도커가 이미 설치된 상황이어야 진행된다.

 

1. sudo usermod -aG docker your-user  를 실행 ( your-user 에 계정을 넣어준다 )

2. kubeadm, kubelet, kubectl를 설치해야한다. 이거는 마스터노드, 워커노드 등 모든 노드에서 실행해줘야 한다.

   이 과정은 노드가 늘어날수록 매우 귀찮아서 ansible로 자동화하는것도 나중에 해본다)

  • kubeadm: 클러스터 시작을 위한 커맨드 툴
  • kubelet: 클러스터 모든 장비에서 실행되는 컴포넌트. 파드나 컨테이너를 실행하는 등의 여러 작업을 수행하는것에 필요
  • kubectl: 클러스터와 통신하기 위한 커먼트 툴입니다. 마스터 노드의 api-server와 통신

3.cat < /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  

 

4. setenforce 0 

5. sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

6. yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

7. systemctl enable --now kubelet

(3~7은 모든 노드에서 실행)

 

8. centos 7에서 iptable에 있던 오류를 해결하기 위해 아래를 입력해준다.

cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF

 

9. sysctl --system

10. modprobe br_netfilter

11. systemctl stop firewalld

12.systemctl disable firewalld

 

 

여기까지 정상적으로 되었으면 kubelet --version을 했을때 kubernets 버전이 나온다.

이제 마스터 노드를 설정한다.

13. kubeadm init

실행하고 맨 마지막에 나오는 kubeadm join --token 을 잘 메모

14. kubectl 권한 활성화

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

 

14. 본격적인 통신을 하기 위해서는 Pod Network Add-On을 설치해야 한다.

나는 calico를 설치한다.

 

15. kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml

 

16.일단 이 시점에서 kubeclt get node하면 마스터노드가 뜨고, kubectl get pod -n kube-system하면 calico등 여러 pod들이 생성되었다.

 

 

17. 이제 아까 메모했떤 token을 가지고 나머지 node들에 접속해서 실행한다

그러면 정상적으로 연결이 되고 Ready가 된다.

+ Recent posts