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