티스토리 뷰

쿠버네티스

 

설치하기전에

설치를 진행한 노드는 master 입니다, 해당 노드의 각 스펙은 아래와 같습니다.

OS CPU Memory Hard
centOS7 8core 16G 300G

공식 문서에 따르면 노드는 2개의 코어 이상이 필요합니다.

  • 2 GB 이상의 램을 장착한 머신. (이 보다 작으면 앱을 위한 공간이 거의 남지 않음)
  • 2 이상의 CPU.
  • Swap의 비활성화. kubelet이 제대로 작동하게 하려면 반드시 Swap을 사용하지 않도록 설정한다.

 

쿠버네티스 마스터 만들기

1. 시스템 설정

Kubernetes를 이상없이 작동하게 하기 위해 firewalldselinux를 비활성화 할 필요가 있습니다.

sudo service firewalld stop 
sudo chkconfig firewalld off 
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 
sudo setenforce 0

 

이후 위에 언급된 swap의 비활성화까지 진행 하도록 합니다.

sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

 

2. 도커 설치 및 활성화

해당 글 에서는 도커 설치를 다루지 않겠습니다. (아래를 따라 써보거나, 참조된 도커 홈페이지를 이용 바랍니다.)

참조 : docs.docker.com

 

Install Docker Engine on CentOS

 

docs.docker.com

sudo yum install -y yum-utils
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io -y
sudo service docker start
sudo chkconfig docker on

 

3. Kubeadm 설치

참조: https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

 

Installing kubeadm

This page shows how to install the kubeadm toolbox. For information on how to create a cluster with kubeadm once you have performed this installation process, see the Using kubeadm to Create a Cluster page. Before you begin A compatible Linux host. The Kub

kubernetes.io

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-\$basearch
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
exclude=kubelet kubeadm kubectl
EOF

마지막으로 kubelet, kubeadm, kubectl을 설치합니다.

sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet

 

4. Master 초기화

이제 설치는 모두 끝났으니 init으로 초기화를 진행 해 주도록 하겠습니다.만약 노드가 여러개라면 master로 사용할 node에서만 진행하도록 합니다.

sudo kubeadm init

5. Master 초기화 중 오류시 조치사항

[에러1]

kubeadm init시 오류가 난다면 kubeadm reset를 다시 해보도록 합니다.

rm –rf /etc/cni/net.d/*
rm –rf $HOME/.kube/config
sudo kubeadm reset
sudo kubeadm init

[에러2]

timed out waiting for the condition라는 오류가 나올 수 있습니다.
해당 오류가 나올 경우의 조치사항입니다. (쿠버네티스 공식 홈페이지에 나와 있는 내용)

sudo 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
 
sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

이후 다시 Master 초기화를 진행 합니다 [에러1] 진행

 

6. Config 설정 (Root가 아닌 사용자도 kubectl가능하게 선택)

Root가 아닌 사용자도 kubectl가능하게 합니다.

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

 

7. Network 설정

쿠버네티스는 네트워크 구성자체를 구성 하지않아 플러그인형태를 사용합니다.

kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')
kubectl get pods --all-namespaces #정상적으로 진행이 되었는지 확인

 

8. Master 노드에도 Pod가 실행가능하게 실행

기본적으로 마스터노드에서 pod를 실행할 수 없습니다. 해당 설정을 하게 됨으로써 Master node에서 pod를 실행할 수 있게 됩니다.

kubectl taint nodes --all node-role.kubernetes.io/control-plane- node-role.kubernetes.io/master-
kubectl get nodes #클러스터가 Ready로 바뀌었는지 확인

 

클러스터가 Ready로 바뀌었는지 확인해보자

 

기타. 이외의 다른 오류들

[기타에러1]

설치 중 Unable to connect to the server: x509: certificate signed by unknown authority
라는 에러가 뜰 시 해결하는 방법입니다.

export KUBECONFIG=/etc/kubernetes/admin.conf

참조 : https://www.edureka.co/community/23959/unable-connect-server-certificate-signed-unknown-authority

 

Error saying Unable to connect to the server x509 certificate signed by unknown authority

I am using kube-aws to v0.9.4-rc2 After successfully do kube-aws up --s3-uri s3:// ... -authority: credentials/ca.pem Where am I going wrong?

www.edureka.co

 

 

[기타에러2]

Kube init 명령어 실행시 에러 추가

쿠버네티스 init 명령어 오류

해결법은 아래와 같다.

rm /etc/containerd/config.toml
systemctl restart containerd
kubeadm init

 

이제 아래에서 쿠버네티스 대시보드를 적용하여 클러스터가 잘 동작하는지 확인 해 보자

https://park-hw.tistory.com/entry/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EB%8C%80%EC%8B%9C%EB%B3%B4%EB%93%9C-%EC%A0%81%EC%9A%A9

 

쿠버네티스 대시보드 적용

쿠버네티스 대시보드 설치 전에 쿠버네티스는 대시보드를 공식적으로 지원해 준다, 아래글은 해당 문서를 참고하여 작성 하였다. (이때 버전은 2.6.0) 참조 : https://github.com/kubernetes/dashboard GitHub -

park-hw.tistory.com

 

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함