SYS_TIME 功能现在在 kubernetes 中工作

Posted

技术标签:

【中文标题】SYS_TIME 功能现在在 kubernetes 中工作【英文标题】:SYS_TIME capability now working in kubernetes 【发布时间】:2020-05-05 15:32:22 【问题描述】:

当我创建一个具有以下安全上下文的 Pod 并有权更改系统时间时出现错误

apiVersion: v1
kind: Pod
metadata:
  name: ubuntu-sleeper
  namespace: default
spec:
  containers:
  - command:
    - sleep
    - "4800"
    image: ubuntu
    securityContext:
     runAsUser: 1010
     capabilities:
        add: ["SYS_TIME"]
    name: ubuntu

我收到无法设置日期操作不允许的错误。

master $ kubectl create -f ubu.yml
pod/ubuntu-sleeper created
master $ kubectl exec -it ubuntu-sleeper -- date -s '19 APR 2012 11:14:00'
date: cannot set date: Operation not permitted
Thu Apr 19 11:14:00 UTC 2012
command terminated with exit code 1
master $ 

【问题讨论】:

【参考方案1】:

要更改系统时间,您必须以 root 身份运行容器:

apiVersion: v1
kind: Pod
metadata:
  name: ubuntu-sleeper
  namespace: default
spec:
  containers:
  - command:
    - sleep
    - "4800"
    image: ubuntu
    securityContext:
     capabilities:
        add: ["SYS_TIME"]
    name: ubuntu

【讨论】:

【参考方案2】:

如果您将用户移动到 pod 级别应该可以工作

apiVersion: v1
kind: Pod
metadata:
  name: ubuntu-sleeper
  namespace: default
spec:
  securityContext:
    runAsUser: 1010
  containers:
  - command:
    - sleep
    - "4800"
    image: ubuntu
    name: ubuntu-sleeper
    securityContext:
      capabilities:
        add: ["SYS_TIME"]

【讨论】:

不,因为容器只是从 pod 级别继承了相同的 1010

以上是关于SYS_TIME 功能现在在 kubernetes 中工作的主要内容,如果未能解决你的问题,请参考以下文章

使用Kubernetes管理Kubernetes集群

生产环境中的Kubernetes最佳实践

Kubernetes 学习总结(23)—— 2022 年 Kubernetes 的 5 个趋势

如何让快速网关在 Kubernetes 中工作?

第五周 扒开系统调用的三层皮(下)

干货会比Kubernetes和无服务器更有前途的是Istio