1.10.5 Ubuntu Worker Node 이미지 사용하기
Step 0. Custom Node Image에 포함시킬 이미지 준비
-
기본 OKE 노드를 사용하였을 때 기본 포함된 이미지를 확인합니다.
$ kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec['initContainers', 'containers'][*].image}" |\ tr -s '[[:space:]]' '\n' |\ sort |\ uniq -c 3 ap-tokyo-1.ocir.io/axoxdievda5j/oke-public-cloud-provider-oci:v1.32-2c5fcd2e853-46-csi@sha256:fb9e892af78589a74bf8a85fa47af4de66cb97a5fbe33846a5e4380f97c024ec 3 ap-tokyo-1.ocir.io/axoxdievda5j/oke-public-proxymux-cli:13757ae5fa6989143755b4cc16867594bb5a88e9-135@sha256:5a6126751984df52b0d2a163e435de54b1b3cfefe3f87a2277e4a9344cb75c9d 1 ap-tokyo-1.ocir.io/id9y6mi8tcky/oke-public-cluster-autoscaler@sha256:03f592a6ada29dcb2f06b2a9ea5e7d8d425e630a5d9311b0ddf9b0d7ca187800 1 ap-tokyo-1.ocir.io/id9y6mi8tcky/oke-public-cluster-proportional-autoscaler-amd64@sha256:1908914e0c9055edd754a633de2a37fd6811a64565317f2f44bf4adea85f0654 3 ap-tokyo-1.ocir.io/id9y6mi8tcky/oke-public-coredns@sha256:e32e8482ef16dbfd86896ece95e81111d5cb110811a65c3ce85df0ce2b69ca17 9 ap-tokyo-1.ocir.io/id9y6mi8tcky/oke-public-flannel@sha256:1d40a538acef1404c92dca16e297265eeedbb517e69c91b1b66d0e5f0a2d0805 6 ap-tokyo-1.ocir.io/id9y6mi8tcky/oke-public-kube-proxy@sha256:bd652187ddd6b7ab04d1f6b6bc52c0b456f3902763e16cfc55c0e601af9b8db2
Step 1&2. Custom Node Image 만들기
-
Availability and Compatibility에서 사용하는 OKE 쿠버네티스 버전과 지원하는 우분투 이미지를 확인합니다. 여기서는 OKE 1.32, Ubuntu 22.04를 사용하겠습니다.
-
해당 이미지로 Compute 인스턴스를 생성하니다.
-
OS Image:
Canonical Ubuntu 22.04 -
Boot volume size을
100GB로 늘립니다. -
SSH Key 등을 다른 정보를 입력하여 인스턴스를 생성합니다.
-
생성한 인스턴스에 SSH로 접속합니다.
-
재접속하여 늘어난 걸 확인합니다.
$ df -h Filesystem Size Used Avail Use% Mounted on tmpfs 1.6G 1.1M 1.6G 1% /run efivarfs 256K 21K 231K 9% /sys/firmware/efi/efivars /dev/sda1 97G 2.9G 94G 3% / tmpfs 7.9G 0 7.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda15 105M 6.1M 99M 6% /boot/efi tmpfs 1.6G 4.0K 1.6G 1% /run/user/1001 -
필요한 업그레이드를 수행합니다.
sudo apt list --upgradable sudo apt update sudo apt upgrade -
OKE 패키지를 설치합니다. Ubuntu 버전과 OKE 버전에 맞게 설정합니다.
sudo tee /etc/apt/sources.list.d/oke-node.list <<'EOF' deb [trusted=yes] https://objectstorage.us-sanjose-1.oraclecloud.com/p/ydEQm2EmISEdvG3EahdKottHftqZAJI7G5nAk24puEE7YLsVfpEjRKn5Rc4PVgMl/n/odx-oke/b/okn-repositories-private/o/prod/ubuntu-jammy/kubernetes-1.32 stable main EOF sudo apt update sudo apt-get install -y oci-oke-node-all-1.32.1 sudo apt-get install -y containerd -
“Step 0"에서 확인한 포함시킬 이미지를 다운로드 받습니다.
sudo su oke bootstrap systemctl start crio crictl pull ap-tokyo-1.ocir.io/axoxdievda5j/oke-public-cloud-provider-oci:v1.32-2c5fcd2e853-46-csi@sha256:fb9e892af78589a74bf8a85fa47af4de66cb97a5fbe33846a5e4380f97c024ec crictl pull ap-tokyo-1.ocir.io/axoxdievda5j/oke-public-proxymux-cli:13757ae5fa6989143755b4cc16867594bb5a88e9-135@sha256:5a6126751984df52b0d2a163e435de54b1b3cfefe3f87a2277e4a9344cb75c9d crictl pull ap-tokyo-1.ocir.io/id9y6mi8tcky/oke-public-cluster-autoscaler@sha256:03f592a6ada29dcb2f06b2a9ea5e7d8d425e630a5d9311b0ddf9b0d7ca187800 crictl pull ap-tokyo-1.ocir.io/id9y6mi8tcky/oke-public-cluster-proportional-autoscaler-amd64@sha256:1908914e0c9055edd754a633de2a37fd6811a64565317f2f44bf4adea85f0654 crictl pull ap-tokyo-1.ocir.io/id9y6mi8tcky/oke-public-coredns@sha256:e32e8482ef16dbfd86896ece95e81111d5cb110811a65c3ce85df0ce2b69ca17 crictl pull ap-tokyo-1.ocir.io/id9y6mi8tcky/oke-public-flannel@sha256:1d40a538acef1404c92dca16e297265eeedbb517e69c91b1b66d0e5f0a2d0805 crictl pull ap-tokyo-1.ocir.io/id9y6mi8tcky/oke-public-kube-proxy@sha256:bd652187ddd6b7ab04d1f6b6bc52c0b456f3902763e16cfc55c0e601af9b8db2 -
서버를 종료합니다.
sudo shutdown now
-
-
작업한 VM로 커스텀 이미지를 생성합니다.
- Name:
Canonical-Ubuntu-22.04-2025.09.22-0-OKE-1.32.1-Custom
- Name:
Step 3. cloud-init 파일 준비
-
oke-ubuntu-cloud-init.yaml파일을 작성합니다.#cloud-config runcmd: - oke bootstrap --kubelet-extra-args "--serialize-image-pulls=true"
Step 4. Node Pool의 Image ID 변경하기
Node Pool 생성시는 많은 옵션 설정이 필요하므로, 편의상 더 간편하게, 이미 생성된 Node Pool에 대한 image id만 업데이트 하겠습니다.
-
업데이트할 Node Pool의 OCID를 확인합니다.
-
사용할 Custom Image의 OCID를 확인합니다.
-
Node Pool의 image id를 업데이트 하겠습니다. OCI CLI 명령 형식은 다음과 같습니다.
NODE_POOL_OCID=ocid1.nodepool.oc1.ap-tokyo-1.aaaaaaaauular5vhospprqihcqu4uf23ih6jmznnqqcwqll7zndyppaftteq CUSTOM_IMAGE_ID=ocid1.image.oc1.ap-tokyo-1.aaaaaaaaln5jy5aelycq2zyvm6hvgikdtfn7pzeqlerjjs4t26fibgktagxq # Linux: --node-metadata '{"user_data": "'$(cat <cloud-init-file> | base64 -w 0)'"}' # Mac: --node-metadata '{"user_data": "'$(cat <cloud-init-file> | base64- b 0)'"}' oci ce node-pool update \ --node-pool-id $NODE_POOL_OCID \ --node-source-details "{ 'source_type': 'IMAGE', 'image_id': '$CUSTOM_IMAGE_ID'}" \ --node-metadata '{"user_data": "'$(cat oke-ubuntu-cloud-init.yaml | base64 -b 0)'"}' -
업데이트 콘솔에서 확인하면 다음과 같습니다.
참고
이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.