--- title: "InitScript の設定" slug: "k8s-k8suse-init-script" tags: ["Kubernetes Service", "vpc", "init script"] updated: 2026-09-17T09:31:52Z published: 2026-09-17T09:31:52Z canonical: "guide.ncloud-docs.com/k8s-k8suse-init-script" --- > ## Documentation Index > Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # InitScript の設定 VPC環境で利用できます。 NAVERクラウドプラットフォームの Ncloud Kubernetes Serviceは、`InitScript`を利用して予め作成しておいたスクリプトを実行し、ノードの初期環境の管理を行えます。`InitScript`は DaemonSetで作成され、各ノードにスケジューリングされます。 注意 - InitScriptは DaemonSetにより動作するので、CRI(Container Runtime Interface)や Kubeletの設定に関与してはいけません。 - InitScriptは Kubernetesで動作するという点でサーバ作成スクリプトに似ていますが、違う方式です。 - スクリプトの内容にセキュリティ侵害が含まれる可能性がある内容は含めないでください。 DaemonSetの特性に関する詳細は、[DaemonSetの公式文書](https://kubernetes.io/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/pub/kr.yml ``` - シンガポール ``` $ kubectl --kubeconfig=$KUBE_CONFIG apply -f https://raw.githubusercontent.com/NaverCloudPlatform/nks-examples/main/examples/initscript/pub/sgn.yml ``` - 日本 ``` $ kubectl --kubeconfig=$KUBE_CONFIG apply -f https://raw.githubusercontent.com/NaverCloudPlatform/nks-examples/main/examples/initscript/pub/jpn.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! ```