TheKoguryo's 기술 블로그

 Version 2025-11-14

1.10.5 Ubuntu Worker Node 이미지 사용하기

Step 0. Custom Node Image에 포함시킬 이미지 준비
  1. 기본 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 만들기
  1. Availability and Compatibility에서 사용하는 OKE 쿠버네티스 버전과 지원하는 우분투 이미지를 확인합니다. 여기서는 OKE 1.32, Ubuntu 22.04를 사용하겠습니다.

  2. 해당 이미지로 Compute 인스턴스를 생성하니다.

    1. OS Image: Canonical Ubuntu 22.04

    2. Boot volume size을 100GB로 늘립니다.

    3. SSH Key 등을 다른 정보를 입력하여 인스턴스를 생성합니다.

    4. 생성한 인스턴스에 SSH로 접속합니다.

    5. 재접속하여 늘어난 걸 확인합니다.

      $ 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
      
    6. 필요한 업그레이드를 수행합니다.

      sudo apt list --upgradable
      sudo apt update
      sudo apt upgrade
      
    7. OKE 패키지를 설치합니다. Ubuntu 버전과 OKE 버전에 맞게 설정합니다.

      OKE Ubuntu node package URL

      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
      
    8. “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
      
    9. 서버를 종료합니다.

      sudo shutdown now
      
  3. 작업한 VM로 커스텀 이미지를 생성합니다.

    • Name: Canonical-Ubuntu-22.04-2025.09.22-0-OKE-1.32.1-Custom
Step 3. cloud-init 파일 준비
  1. 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만 업데이트 하겠습니다.

  1. 업데이트할 Node Pool의 OCID를 확인합니다.

  2. 사용할 Custom Image의 OCID를 확인합니다.

  3. 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)'"}'
    
  4. 업데이트 콘솔에서 확인하면 다음과 같습니다.

    image-20251031202542944

참고


이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.

Last updated on 31 Oct 2025