neo*_*yle 6 services juju systemd docker kubernetes
请注意,有人提出了类似的问题:
如何在启动“服务”时传递标志?
但是我不久前读到 Linux 从 init.d 切换到 systemd,并且由于该问答已有 6 年的历史,我认为它可能指的是 init.d
我的问题是:
启动 systemd 服务时如何传递标志/参数?假设我执行 systemctl restart Kubelet,这意味着我正在运行 Kubelet 服务,那么我如何查看和修改传递给该服务的标志/参数?(如--anonymous-auth=false)
还有一些背景信息:
我即将安排我的 CNCF Kubernetes 认证考试,考试是基于性能的,涵盖了一些通常从集群管理员中抽象出来的细节。
我了解到有 7 个核心二进制文件构成了 Kubernetes:[docker、etcd、kube-apiserver、kube-controller-manager、kube-scheduler、kube-proxy 和 kubelet]
其中一些 Kubernetes 控制平面二进制文件是“self托管”/在 Kubernetes 上作为 Pod 运行,并传递参数/标志,如 --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 ,但我实际上不知道如何查看或修改传递给它们的标志/参数。
Geo*_*sen 10
从这里可以这样做:
创建一个参数文件说 /etc/.argconf
ARG1=-o
ARG2=--verbose
Run Code Online (Sandbox Code Playgroud)还有你的 .service 文件:
EnvironmentFile=/etc/.argconf
ExecStart=/usr/bin/prog $ARG1 $ARG2
Run Code Online (Sandbox Code Playgroud)来自同一帖子的另一种方法如下所示:
[Unit]
Description=Test passing multiple arguments
[Service]
Environment="SCRIPT_ARGS=%I"
ExecStart=/tmp/test.py $SCRIPT_ARGS
Run Code Online (Sandbox Code Playgroud)
并且必须myservice@.service注意文件的名称,@因为以这种方式将参数传递给服务时需要这样做。然后像这样运行该服务:
sudo systemctl start myservice@"arg1 arg2 arg3".service
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26499 次 |
| 最近记录: |