본문 바로가기
카테고리 없음

k8s 설치

by ny0011 2024. 2. 27.
반응형

쿠버네티스를 설치하기 위한 기본 설정

# 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 이거보고 따라하는게 더 나은듯

 

Kubeadm으로 K8S 구성

K8S에서 공식적으로 제공해주는 도구이다. 클러스터를 빨리 구축하기 위한 다양한 기능을 제공한다.구성환경: Vagrant로 CentOS 이미지 사용 \*쿠버네티스 공식 Docs를 보고 설치를 하였다.네트워크

velog.io

 

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

 

 

 

댓글