--- title: "InitScript 설정" slug: "k8s-k8suse-init-script" tags: ["Kubernetes Service 사용", "kubernetes Service 기능 사용", "Kubernetes Service (VPC)"] updated: 2026-08-20T09:03:27Z published: 2026-08-20T09:03:27Z canonical: "guide-gov.ncloud-docs.com/k8s-k8suse-init-script" --- > ## Documentation Index > Fetch the complete documentation index at: https://guide-gov.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # InitScript 설정 VPC 환경에서 이용 가능합니다. 네이버 클라우드 플랫폼의 Ncloud Kubernetes Service는 `InitScript`를 통해 미리 작성해 둔 스크립트를 실행하여 노드의 초기 환경 관리를 진행할 수 있습니다. `InitScript`는 DaemonSet으로 생성되어 각 노드에 스케줄링됩니다. 주의 - InitScript는 CRI(Container Runtime Interface), Kubelet의 설정에는 관여하지 않아야 합니다. - InitScript는 Kubernetes에서 동작하므로 서버 생성 스크립트와 유사하지만 다른 방식입니다. - 스크립트 내용에 보안 침해가 있을 수 있는 내용은 포함하지 않아야 합니다. DaemonSet의 특성에 관한 상세 정보는 [DaemonSet 공식 문서](https://kubernetes.io/ko/docs/concepts/workloads/controllers/daemonset/)에서 확인할 수 있습니다. ## InitScript 생성 및 삭제 ### InitScript 생성 아래 리전에 해당하는 명령어를 실행하여 InitScript를 생성할 수 있습니다. 명령어 실행 시 kube-system 네임스페이스에 Daemonset으로 Init-Script가 생성됩니다. - 수도권 ``` $ kubectl --kubeconfig=$KUBE_CONFIG apply -f https://raw.githubusercontent.com/NaverCloudPlatform/nks-examples/main/examples/initscript/gov/kr.yml ``` - 남부권 ``` $ kubectl --kubeconfig=$KUBE_CONFIG apply -f https://raw.githubusercontent.com/NaverCloudPlatform/nks-examples/main/examples/initscript/gov/krs.yml ``` ### InitScript 생성 확인 아래 명령어를 실행하여 클러스터 내에 동작 중인 InitScript의 생성 및 상태를 확인할 수 있습니다. InitScript는 Daemonset으로 동작하여 모든 노드에 스케줄링 됩니다. 만일 노드가 추가될 경우 신규 노드에도 동일하게 생성되므로 별도의 생성은 진행하지 않아도 됩니다. ``` $ kubectl --kubeconfig=$KUBE_CONFIG get daemonset init-script -n kube-system ``` 아래 명령어를 실행하여 InitScript 생성 확인 및 초기 동작을 확인할 수 있습니다. ``` $ kubectl --kubeconfig=$KUBE_CONFIG logs -n kube-system -l name=init-script ``` ### InitScript 삭제 아래 명령어를 실행하여 클러스터 내에 생성된 InitScript를 삭제할 수 있습니다. ``` $ kubectl --kubeconfig=$KUBE_CONFIG delete daemonset init-script -n kube-system ``` ## InitScript 설정 및 동작 확인 InitScript를 통해 특정 스크립트를 실행하기 위해서는 InitScript Daemonset의 환경변수 값으로 BASE64로 인코딩 된 스크립트 내용을 기재하여야 합니다. ### InitScript 설정 미리 생성해 둔 스크립트 파일을 이용하거나 생성한 InitScript Daemonset을 수정하여 InitScript에 스크립트를 설정할 수 있습니다. 아래 명령어를 실행하여 미리 생성해 둔 스크립트 파일을 InitScript에 설정할 수 있습니다. ``` $ kubectl --kubeconfig=$KUBE_CONFIG set env daemonset/init-script -n kube-system STARTUP_SCRIPT=$(base64 {init-script-filename} -w 0) ``` 아래 명령어를 실행하여 InitScript의 내용을 직접 수정하여 설정할 수 있습니다. ``` $ kubectl --kubeconfig=$KUBE_CONFIG edit daemonset/init-script -n kube-system ``` ### InitScript 동작 확인 아래 명령어를 실행하여 InitScript의 Pod 로그를 조회할 수 있으며, Pod 로그를 통해 스크립트 실행 결과를 확인할 수 있습니다. - 전체 InitScript Pod의 로그를 조회하고 싶은 경우 ``` $ kubectl --kubeconfig=$KUBE_CONFIG -n kube-system -l name=init-script ``` - 특정 InitScript Pod의 로그를 조회하고 싶은 경우 ``` $ kubectl --kubeconfig=$KUBE_CONFIG -n kube-system [init-script-pod-name] ``` InitScript는 설정 명령어와 동일한 명령어를 통해 수정이 가능합니다. 수정 이후에는 신규 InitScript Pod가 생성됩니다. 스크립트의 내용이 변경되지 않은 경우 Pod가 재기동 되어도 스크립트는 실행되지 않습니다. ## InitScript 사용 예제 아래 과정은 InitScript를 통해 각 노드의 패스워드를 설정하는 예제입니다. (1) 스크립트 확인 InitScript에 등록할 스크립트를 확인합니다. ``` #!/bin/bash # change-passwd.sh echo "Password Init" echo -e '[변경 패스워드]' | passwd root ``` (2) 실행 스크립트 설정 스크립트 파일을 인코딩하여 InitScript의 환경변수에 등록합니다. ``` $ kubectl --kubeconfig=$KUBE_CONFIG set env daemonset/init-script -n kube-system STARTUP_SCRIPT=$(base64 change-passwd.sh -w 0) ``` (3) Pod 로그를 통한 동작 확인 아래 명령어를 통해 스크립트 동작 로그를 확인합니다. ``` $ kubectl --kubeconfig=$KUBE_CONFIG get logs -n kube-system [init-script-pod-name] ``` 동작이 정상적으로 수행됐을 경우 아래와 같은 결과가 표시됩니다. ``` $ kubectl --kubeconfig=$KUBE_CONFIG logs -n kube-system init-script-mzwl7 Password Init New password: Retype new password: passwd: password updated successfully !!! startup-script succeeded! ```