2

我从事 kube-proxy 开发工作,目前正处于了解 kube-proxy 的目的和执行的阶段。

我知道 kube-proxy 会添加 iptables 规则以使用户能够访问暴露的 pod(这是 iptables 模式下的 kubernetes 服务)。

让我感到奇怪的是,这些规则是在运行 kube-proxy pod 的主机节点中添加的,目前尚不清楚该 pod 如何能够访问主机节点上的这些权限。

我查看了 kubernetes 的代码,但没有成功找到这个特定部分,所以如果您有任何想法、资源或文档可以帮助我解决这个问题,我们将不胜感激。

4

2 回答 2

2

kube-proxy.yaml

apiVersion: v1
kind: Pod
metadata:
  name: kube-proxy
  namespace: kube-system
spec:
  hostNetwork: true
  containers:
  - name: kube-proxy
    image: gcr.io/google_containers/hyperkube:v1.0.6
    command:
    - /hyperkube
    - proxy
    - --master=http://127.0.0.1:8080
    securityContext:
      privileged: true
    volumeMounts:
    - mountPath: /etc/ssl/certs
      name: ssl-certs-host
      readOnly: true
  volumes:
  - hostPath:
      path: /usr/share/ca-certificates
    name: ssl-certs-host

根据Pod 安全策略文档:

Privileged - 确定 pod 中的任何容器是否可以启用特权模式。默认情况下,不允许容器访问主机上的任何设备,但“特权”容器可以访问主机上的所有设备。这允许容器几乎与主机上运行的进程具有相同的访问权限。这对于想要使用 linux 功能(例如操作网络堆栈和访问设备)的容器很有用。

换句话说,它赋予容器或 pod(取决于上下文)大部分 root 权限。

在 securityContext 部分中有更多选项可以控制 pod 的功能:

  • 权限提升
  • Linux 功能
  • SELinux
  • 用户和组
  • 联网

考虑阅读全文获取详细信息和代码片段。

于 2018-06-01T12:20:13.733 回答
0

在我的 kube-proxy.yaml 中,有关于权限的配置,如下所示:

securityContext:
  privileged: true

我认为这会给 kube-proxy 足够的特权。

于 2018-06-01T01:36:07.783 回答