Kubernetes

kubernetes 구성

ducku 2021. 12. 3. 15:59

 

1)kubernetes설치 전 환경설정(master, work 모두 진행)  (Centos, Ubuntu)

 *swab disabled

swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab

*iptables가 브리지된 트래픽을 보도록 허용.

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

sysctl --system

*방화벽off

systemctl stop firewalld 
systemctl disable firewalld

 

2) kubeadm, kubectl, kubelet 설치(master, work노드 모두진행)
2-1. 데비안계열(우분투)

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

systemctl start kubelet
systemctl enable kubelet

2-2. 레드햇계열(centos)

cat <<EOF | sudo tee /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
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

sudo systemctl enable --now kubelet

systemctl start kubelet
systemctl enable kubelet

3)control-plane 구성(!!master node 에서만!!!)

kubeadm init


후 토큰값을 token.txt파일에 저장

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


위 세줄은 일반사용자가 kubectl명령어 사용할 수 있게 권한을 부여해주는것.

kubectl get nodes


정상작동 확인.( STATUS : Not Ready)

 

4)pod network add-on 설치(master에서만)

나의 경우 weave넷을 사용했다.

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

설치 후 kubectl get nodes 명령어 입력하면 STATUS:Ready로 변경됨( 다소 시간 필요 )

 


5)worker node 구성
kubeadm join [token] 명령어로 master노드와 연결

 

 

 

---------------------------------ERROR----------------------------------
에러상황1 :

It seems like the kubelet isn't running or healthy.~~~
조치방법
도커와 쿠버네티스의 cgroup드라이버가 달라서 발생한 경우일 수 있다.
쿠버네티스의 cgroup드라이버는 systems인데, 도커는 systemd라서 그렇다.
따라서 /etc/docker/daemon.jon에 아래의 내용을 추가해주고

{
    "exec-opts": ["native.cgroupdriver=systemd"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl restart kubelet

'Kubernetes' 카테고리의 다른 글

H/W resource 관리  (0) 2022.01.07
livenessProbe  (0) 2022.01.07
Kubernetes namespace  (0) 2022.01.05
Kubernetes Component  (0) 2022.01.05
kubectl command  (0) 2021.12.03