1. 程式人生 > 實用技巧 >在Kubernetes中配置Container Capabilities

在Kubernetes中配置Container Capabilities

目前有個需求,需要修改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