同様の質問がされていることに注意してください。
「サービス」の開始時にフラグを渡す方法
しかし、Linuxがinit.dからsystemdに切り替わったことをしばらく読んで、Q&Aが6歳になってからinit.dを参照しているのではないかと考えました。
私の質問は:
systemdサービスを開始するとき、フラグ/引数をどのように渡しますか? systemctl restart Kubeletを実行するとします。つまり、Kubeletサービスを実行していますが、そのサービスに渡されるフラグ/引数を確認および変更するにはどうすればよいでしょうか。 (--anonymous-auth = falseなど)
また、コンテキストを次に示します。
CNCF Kubernetes認定試験のスケジュールに近づいています。この試験はパフォーマンスに基づいており、通常はクラスター管理者から抽象化された重要なものをカバーしています。
学んだことは、Kubernetesを構成する7つのコアバイナリがあることです:[docker、etcd、kube-apiserver、kube-controller-manager、kube-scheduler、kube-proxy、kubelet]
これらのKubernetesコントロールプレーンバイナリの一部は「セルフホスト」/ Kubernetesでポッドとして実行され、-service-cluster-ip-range = 10.0.0.0/16のような引数/フラグを渡します
次のURLには、KubernetesでDockerコンテナーとして実行されるいくつかのコアバイナリの例と、YAML仕様の引数として渡されるフラグがあります。 https://kubernetes.io/docs/setup/scratch/#scheduler-pod-template
KubeletやDockerなどの他のコアKubernetesバイナリは、セルフホスティングに適しておらず、代わりにLinuxシステムデーモンとして実行され、systemdを使用して実行され、systemctlおよびjournalctlで管理されます。とにかくノードにログインして、以前にsystemctl restart docker.serviceとsystemctl restart kubelet.serviceを実行する必要がありましたが、実際にはどのフラグ/引数が渡されるかを確認または変更する方法がわかりません。
here から:これは次のように行うことができます:
/etc/.argconf
と言う引数ファイルを作成します
ARG1=-o
ARG2=--verbose
.serviceファイル:
EnvironmentFile=/etc/.progconf
ExecStart = /usr/bin/prog $ARG1 $ARG2
その同じ投稿からの別の方法は以下のとおりです。
[Unit]
Description=Test passing multiple arguments
[Service]
Environment="SCRIPT_ARGS=%I"
ExecStart=/tmp/test.py $SCRIPT_ARGS
また、ファイルの名前は[email protected]
である必要があります。この方法でサービスに引数を渡すときに必要になるため、@
に注意してください。次に、そのサービスを次のように実行します。
Sudo systemctl start myseervic@"arg1 arg2 arg3".service
Linuxのすべての実装/フレーバー/ディストリビューションが少し異なるように。
Kuberntesの実装はすべて少し異なることがわかりました。
そして、systemdを実装するにはさまざまな方法があります。
すべてのその変動性で、これを行うための最良の方法は次のように思われます:
findコマンドを使用して、*。serviceの場所を見つけるには
WorkerNodeBash#find/-name "* .service" | grep -i "kube"
WorkerNodeBash#nano /etc/systemd/system/kubelet.service
[Unit]
Description=Kubernetes Kubelet
Documentation=https://github.com/kubernetes/kubernetes
After=containerd.service
Requires=containerd.service
[Service]
ExecStart=/usr/local/bin/kubelet \
--config=/var/lib/kubelet/kubelet-config.yaml \
--container-runtime=remote \
--container-runtime-endpoint=unix:///var/run/containerd/containerd.sock \
--image-pull-progress-deadline=2m \
--kubeconfig=/var/lib/kubelet/kubeconfig \
--network-plugin=cni \
--register-node=true \
--pod-manifest-path=/etc/kubernetes/manifests \
--v=2
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
(上記はKubernetesのハードな実装に由来し、私もkubeadmを実行し、この同じファイルを見て引数を見つけませんでしたが、findコマンドの使用方法を学習したおかげで、検索できました:
WorkerNodeBash#find/-type f -name "* .yaml" | grep "kube"
そして、KUBELET_EXTRA_ARGS =を記述した設定ファイルを見つけて、そこに渡します。