在Kubernetes中配置Container Capabilities
阿新 • • 發佈:2020-08-10
目前有個需求,需要修改k8s裡的應用的系統時間來進行一些業務場景的測試。
但直接在pod裡執行date -s 日期時,告知沒有這個許可權,不允許許可權操作。如果需要實現在kubernetes修改容器時間,則需要設定增加sys_time的capabilities
這裡涉及容器裡的Container Capabilities
說著Capabilities 則要說一下LinuxCapabilities
kernel 2.2 之後Linux 以capabilities區分不同單元的關聯root特權。非root程序都去檢查對應的capabilities。
當前設定系統時間,那麼就需要CAP_SYS_TIME capabilities
而Docker與宿主機之間的安全關係,Docker預設的root許可權會比宿主機的root使用者少很多,來進行必要的安全隔離管理。
如果希望獲取一些特殊的許可權,可通過--cap-add 和 --cap-drop 引數來調整。
下面的Capabilities可參考給容器新增對應的許可權
KubernetesCapabilities 配置
新增到pod的定義 spec.containers.sercurityContext.capabilities
apiVersion: v1 kind: Pod metadata: name: app-systime-demo spec: containers: - name: app-systime-demo image: busybox securityContext: capabilities: add: - SYS_TIME
kubectl apply -f app-systime-demo.yaml