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 |