이전에 Ubuntu 20.04 에 Docker/Contained 로 Kubernetes 설치하는 글을 썼으나,
(이전 글 - 2023.08.21 - [Develop/k8s] - Ubuntu 20.04 kubernetes(k8s) 설치)
최근에 Mac M2 Arm 아키텍처에 Ubuntu 22.04에서 그대로 설치를 진행하니 kube-apiserver가
계속 종료되는 현상이 발생했다. 아마 k8s 와 containerd 간의 cgroup 설정문제로 그런 것 같은데
이참에 cri-o 로 cgroup 설정도 해볼겸 다시 설치를 진행하였다.
기본적으로 root 계정으로 실행하며, 아래 5번까지는 Master노드와 Worker 노드에 똑같이 설정한다
1. 패키지 업데이트 또는 필요한 항목 설치
apt-get update
apt-get install -y software-properties-common curl
2. Kubernetes과 cri-o 다운 경로 설정
해당 설정은 직접 버전과 경로를 설정하면 필요 없다.
KUBERNETES_VERSION=v1.29
PROJECT_PATH=prerelease:/main
3. Kubernetes 와 cri-o Repository 설정
# kubernetes
curl -fsSL https://pkgs.k8s.io/core:/stable:/$KUBERNETES_VERSION/deb/Release.key |
gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/$KUBERNETES_VERSION/deb/ /" |
tee /etc/apt/sources.list.d/kubernetes.list
# cri-o
curl -fsSL https://pkgs.k8s.io/addons:/cri-o:/$PROJECT_PATH/deb/Release.key |
gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://pkgs.k8s.io/addons:/cri-o:/$PROJECT_PATH/deb/ /" |
tee /etc/apt/sources.list.d/cri-o.list
4. 패키지 설치
apt-get update
apt-get install -y cri-o kubelet kubeadm kubectl
설치하게되면 cri-o 가 동작중이 아니므로, 서비스 실행
systemctl start crio.service
5. 클러스터 동작을 위한 기본 구성
swapoff -a
modprobe br_netfilter
sysctl -w net.ipv4.ip_forward=1
6. kubernetes init (Master 노드만 진행한다)
kubeadm init
진행 후 완료 되면 나오는 메세지대로 config 파일을 생성한다.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
정상적으로 성공할 경우 아래 값 반환 해당값 메모장에 임시 저장
kubeadm join 192.x.x.x:6443 --token c5l89v.9ao1r5texepx06d8 \
--discovery-token-ca-cert-hash sha256:50cb3eaxe334612e81c2342790130801afd70ddb9967a06bb0b202141748354f
7. Node 등록 (Worker 노드만 진행한다.)
6번에서 저장한 kubeadm join 입력
kubeadm join 192.x.x.x:6443 --token c5l89v.9ao1r5texepx06d8 \
--discovery-token-ca-cert-hash sha256:50cb3eaxe334612e81c2342790130801afd70ddb9967a06bb0b202141748354f
8. Master에서 확인
Master에서 아래 명령어 실행
kubectl get nodes -o wide
Ready 로 잘 연결된 것을 확인
9. cilium 설치 (Master 노드만 진행한다)
# Arm 아키텍처여서 Arm으로 진행 github에 접속해서 알맞은 아키텍처로 설치 필요
curl -LO https://github.com/cilium/cilium-cli/releases/latest/download/cilium-linux-arm64.tar.gz
설치 후 압축 해제 및 cilium install
sudo tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin
cilium install
cilium 설치 확인(설치되고 pod가 뜨는데 몇분걸림) 및 핵심 pod 정상 확인
v1.29가 아닌 v1.28이하로 설치할 경우 cri-o만 따로 설치 후 이전과 비슷한 방법으로 k8s를 설치해줘야 하는 것 같다.
참고 - https://github.com/cri-o/cri-o/blob/main/install.md#installation-instructions
cri-o v1.29 이상 설치 - https://github.com/cri-o/packaging/blob/main/README.md
cri-o v1.28 이하 설치 - https://github.com/cri-o/cri-o/blob/main/install-legacy.md
'Develop > k8s' 카테고리의 다른 글
Alpine linux Pod shell script No such file or directory (0) | 2024.04.17 |
---|---|
cri-o error validating runtime config: cannot enable checkpoint/restore support without the criu binary in (0) | 2024.04.09 |
k8s 모든 리소스 조회 및 백업 (kubectl api-resources) (0) | 2023.12.06 |
Windows kubectl 및 Multiple-Clusters 접근 (Windows에서 k8s Cluster 사용) (0) | 2023.11.29 |
ETCD Leader 및 List 조회 (0) | 2023.11.21 |