我们基于具有公司标准服务和实用程序的自定义VM映像运行K8S群集。吊舱/容器如何访问这些容器/容器?例如,如何在主机中作为部署/取消部署的一部分启动服务
答案 0 :(得分:3)
您可以将systemd套接字安装到Pod的容器中。从那里开始,您需要具有polkit权限才能以非特权用户身份运行命令,或者您需要以特权容器身份运行容器。这样做的Pod规范如下:
kind: Pod
metadata:
name: dbus-pod
labels:
app: dbus
spec:
containers:
- name: dbus-container
image: centos:7
command: ['systemctl','status','sshd']
securityContext:
privileged: true
volumeMounts:
- name: run-dbus
mountPath: /var/run/dbus
- name: run-systemd
mountPath: /run/systemd
- name: bin-systemctl
mountPath: /usr/bin/systemctl
readOnly: true
- name: etc-systemd
mountPath: /etc/systemd/system
readOnly: true
restartPolicy: Never
volumes:
- name: run-dbus
hostPath:
path: /var/run/dbus
- name: run-systemd
hostPath:
path: /run/systemd
- name: bin-systemctl
hostPath:
path: /usr/bin/systemctl
- name: etc-systemd
hostPath:
path: /etc/systemd/system
然后,您必须弄清楚如何在群集上安排Pod。如果您想在每个节点上运行一次,则可以创建一个DaemonSet并将其删除。如果您有选择器来定义Pod的运行位置,那么Job可能更合适。
还有go-systemd之类的项目,它们通过/var/run/dbus
套接字控制dbus,并取代了所有systemd / systemctl设置。