상세 컨텐츠

본문 제목

k8s 구축해보기

k8s

by drogva 2024. 4. 29. 01:54

본문

●-기본 구축 마스터노드1, 워커노드1

 

최소사양 cpu 2 GB RAM

코어 2

Centos 7 

 

-선수조건 

● k8s 가 설치 되는 경우 cri (container runtime interfece) 는 contaierd 와 호환 되므로 모든 노드에 container runtime 은 containerd.service 설치

●  마스터 노드에서 워커 노드간의 통신 혹은 vm 환경에서의 콘트롤노드에서 워커노드에 ip 를 통해 명령을 10250 포트를 통해 명령을 지시하기 위해서는 포트포워딩이 필요하다.

# sysctl params required by setup, params persist across reboots
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
EOF

# Apply sysctl params without reboot
sudo sysctl --system

Verify that net.ipv4.ip_forward is set to 1 with:

sysctl net.ipv4.ip_forward

모든 노드에 적용해야한다. 마스터노드는 워커노드에 명령을 내리고 워커노드는 그 명령을 수신해야하기 때문이다.

 

● containerd runtime 설치

wget https://github.com/containerd/containerd/releases/download/v1.7.16/containerd-1.7.16-linux-amd64.tar.gz

tar Cxzvf /usr/local containerd-1.7.16-linux-amd64.tar.gz

 

●containerd 의 cgroup 을 systemd 로 설정해준다. 

리눅싀 systemd 를 통해서 control group 이 containerd를 관리하게 하므로서 리소스충돌을 방지한다. containerd 또한 로컬의 파일시스템이 마운트된다. 

https://raw.githubusercontent.com/containerd/containerd/main/containerd.service   여기 있는 내용을 복사한다.

vi containerd.service  에 붙여 넣기

mkdir -p /usr/local/lib/systemd/system

cp containerd.service   /usr/local/lib/systemd/system

 

● runc 설치

runc는 OCI(Open Container Initiative)에서 정의된 컨테이너 실행을 위한 표준 스펙에 따라 컨테이너를 실행하는 도구

wget https://github.com/opencontainers/runc/releases/download/v1.2.0-rc.1/runc.amd64

install -m 755 runc.amd64 /usr/local/sbin/runc

 

●CNI 플러그인 설치

주로 워커노드에 설치되며, 클러스터 내부에 컨테이너들이 네트워크를 통해 통신을 가능하게 한다.

wget https://github.com/containernetworking/plugins/releases/download/v1.4.1/cni-plugins-linux-amd64-v1.4.1.tgz

mkdir -p /opt/cni/bin

tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.4.1.tgz

   

 

● /etc/containerd/config.toml  생성해서 붙여 넣기 하면 된다. 원래 cgroup 를 systemd 에 등록하여 줄려고 하였으나 이제는 알아서 systmed 에 등록 되는 듯, 

-sandbox 관련 내용은  pod 를 관리하게 위해 필요하다. 볼륨을 마운트 파드에 네트워크 ip 를 부여한다든지

[plugins."io.containerd.grpc.v1.cri"]
  sandbox_image = "registry.k8s.io/pause:3.2"

붙여넣기만 하면된다. 설치 할 때 보니까 3.8 버전 까지 나온거 같다. 알아서 업로드 해주는 거 같다.

systemctl restart containerd

- 재시작해서 구동 되는지 확인

 

 

1. 스왑메모리 비활성화기,

swapoff -a,  vi /etc/fstab  에 들어가 swapon 주석처리, sed -i '2s/^/#/' /etc/fstab

 

2. 모든 vm 에 kubeadm, kubectl, kubelet  설치

MAC 주소와 UUID 는 각 인스턴스마다 고유하여야 한다. 

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 Creating a cluster with kubeadm page. This installation guide is for Kubernetes v1.30. If

kubernetes.io

 

 

 

 

3.  레드햇 설치 기준을 따랐다. kubeadm 버전은 1.30에 맞춰 줬다. vm 중 하나가 버전 차이가 나면 1버전 이상 같기도하고 분면 그 이하 버전차이였는데 마스터노드에 워커노드가 조인이 안됐다. 그래서 동일 버전으로 모두 통일 후 설치

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 Creating a cluster with kubeadm page. This installation guide is for Kubernetes v1.30. If

kubernetes.io

4. 클러스터 생성,

 

sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.99.102

 

파드의 ip 와 마스터 노드의 ip 는 겹쳐서 안된다. 

 

생성 후 , 

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

Alternatively, if you are the root user, you can run:

export KUBECONFIG=/etc/kubernetes/admin.conf

쿠버네티스 api 에 접근하기 위한 관리자 설정파일을 해당 노드에서 저장한다.

 

5. 파드의 네트워크 add-on 사용하기 위해  flannel yaml 적용  처음에 pod-cidr 을 지정하지 않았다면 이 add-on 을 설치해도 오류만 난다. 미리 pod cidr 는 지정해야 하며 이걸 설치해야 pod coredns 기능도 활성화된다. flannel, clico 등이 있는 듯

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

 

6. 워커노드 조인

 

kubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash>

 

7. 결과

 

관련글 더보기