카테고리 없음

[Rocky 10] Kubernetes 를 해보자

PeamS 2026. 4. 6. 16:11

토막난 글입니다.

kube 1.35

cri-o 사용

 

설치 과정

방화벽 / SELINUX / SWAP 중지

sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
systemctl stop firewalld && systemctl disable firewalld
swapoff -a
sed -i '/ swap /s/./#&/' /etc/fstab

 

https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/
overlay : 컨테이너용 파일 시스템, br_netfilter : 내부 통신 시 필요

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

modprobe overlay
modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
kernel.unprivileged_bpf_disabled    = 1 # CNI 설치 시
EOF

sysctl --system

 

cat <<'EOF'> /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.35/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.35/rpm/repodata/repomd.xml.key
EOF

cat <<EOF | tee /etc/yum.repos.d/cri-o.repo
[cri-o]
name=CRI-O
baseurl=https://download.opensuse.org/repositories/isv:/cri-o:/stable:/v1.35/rpm/
enabled=1
gpgcheck=1
gpgkey=https://download.opensuse.org/repositories/isv:/cri-o:/stable:/v1.35/rpm/repodata/repomd.xml.key
EOF

 

dnf install -y container-selinux
dnf install -y cri-o kubelet kubeadm kubectl

 

/etc/crio/crio.conf.d/10-crio.conf 수정

[crio.runtime]
conmon_cgroup = "pod"
systemd_cgroup = true
# 위에 두개 추가

 

systemctl daemon-reload
systemctl enable --now crio.service
systemctl enable --now kubelet

 

 

cat <<EOF> kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: "<호스트 아이피>"
  bindPort: 6443
nodeRegistration:
  criSocket: "unix:///var/run/crio/crio.sock"
  imagePullPolicy: IfNotPresent
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: "v1.35.0"
controlPlaneEndpoint: "kube-host:6443"
networking:
  serviceSubnet: "10.200.0.0/12"
  podSubnet: "10.0.0.0/16"
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
failSwapOn: true
EOF

 

kubeadm init --config kubeadm-config.yaml

 

실패해서 초기화 할 때

kubeadm reset -f --cri-socket=unix:///var/run/crio/crio.sock

 

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

 

#https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.31.4/manifests/tigera-operator.yaml

# 배포 상태 확인
kubectl describe pod -n tigera-operator

curl -O https://raw.githubusercontent.com/projectcalico/calico/v3.31.4/manifests/custom-resources.yaml

kubectl get cm -n kube-system kubeadm-config -o yaml | grep podSubnet

# cidr: 192.168.0.0/16 를 10.0.0.0/16 으로 변경

kubectl create -f  custom-resources.yaml

# 칼리오들
kubectl get pods -n calico-system

 

 

# 현재 노드 상황
kubectl get nodes <-o wide>

[root@kube-host ~]# kubectl get node
NAME        STATUS   ROLES           AGE    VERSION
kube-02     Ready    <none>          98m    v1.35.3
kube-host   Ready    control-plane   129m   v1.35.3
kubelet 각 노드에 실행되는 에이전트
CNI(Container Network Interface)  
   

 

kube-apiserver  
etcd  
kube-controller-manager  
kube-scheduler  
kube-proxy