반응형
쿠버네티스를 설치하기 위한 기본 설정
# swapon && cat /etc/fstab
# swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
# setenforce 0
# 포트 열어줘야 하는데 방화벽 있으면 매번 해제해야 함
# ufw disable
# systemctl stop firewalld
~# lsmod | grep overlay
overlay 126976 0
~# lsmod | grep br_netfilter
br_netfilter 28672 0
bridge 266240 1 br_netfilter
# 위처럼 안돼있으면 아래 명령어 실행
# cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
overlay
EOF
# sysctl -a | grep net.bridge.bridge-nf-call
# sysctl -a | grep net.ipv4.ip_forward
# 위처럼 안돼있으면 아래 명령어 실행
# cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
# 설정 적용
# sysctl --system
# 파일이 없으면 아래 명령어 수행
# 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
# 확인
# docker info | grep Cgroup
Cgroup Driver: systemd
Cgroup Version: 1
# kubeadm(클러스터 배포 툴), kubelet(클러스터 서비스 데몬) and kubectl(명령어) 패키지 설치
# apt-get update
# apt-get install -y apt-transport-https ca-certificates curl
# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/kubernetes-archive-keyring.gpg >/dev/null
# 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 update
# apt-get install -y kubelet kubeadm kubectl
# apt-mark hold kubelet kubeadm kubectl
마스터 노드만 실행)
# kubeadm init --pod-network-cidr=172.16.0.0/16
# 이런 에러가 발생하면
[ERROR CRI]: container runtime is not running: output: time="2024-02-27T19:30:28+09:00" level=fatal msg="validate service connection: CRI v1 runtime API is not implemented for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService"
# 아래처럼 조치
# vi /etc/containerd/config.toml
# 아래 내용 주석처리
#disabled_plugins = ["cri"]
# 다시 init을 실행하고나면 kubeadm join ~ 부분을 복사해둔다
# vi ~/.bashrc
export KUBECONFIG=/etc/kubernetes/admin.conf
# source ~/.bashrc
# echo $KUBECONFIG
/etc/kubernetes/admin.conf
추가로 calico를 설치해준다
https://velog.io/@seunghyeon/Kubeadm%EC%9C%BC%EB%A1%9C-K8S-%EA%B5%AC%EC%84%B1 이거보고 따라하는게 더 나은듯
curl https://calico-v3-25.netlify.app/archive/v3.25/manifests/calico.yaml -O
kubectl apply -f calico.yaml
설정 리셋
# sudo kubeadm reset
상태 확인
# kubectl get nodes
# kubectl get pods -n kube-system -o wide
+ 에러 처리
# kubeadm init --pod-network-cidr=172.16.0.0/16
Found multiple CRI endpoints on the host.
Please define which one do you wish to use by setting the 'criSocket' field in the kubeadm configuration file:
unix:///var/run/containerd/containerd.sock, unix:///var/run/cri-dockerd.sock
To see the stack trace of this error execute with --v=5 or higher
# 위의 에러가 나면 /var/run 밑에 cri socket이 여러개 있어서 선택해달라고 하는 의미다
# kubeadm init --pod-network-cidr=172.16.0.0/16 --cri-socket /var/run/cri-dockerd.sock
댓글