首页 > 其他 > 详细

pod 权限与网络安全限制

时间:2020-01-17 12:02:02      阅读:124      评论:0      收藏:0      [点我收藏+]

pod使用宿主节点的Linux命名空间

pod中的容器通常在分开的Linux命名空间中运行。 这些命名空间将容器中的进程与其他容器中,或者宿主机默认命名空间中的进程隔离开来。

一、在pod中使用宿主节点的网络命名空间

部分pod(特别是系统pod)需要在宿主节点的默认命名空间中运行,以允许它们看到和操作节点级别的资源和设备。例如,某个pod可能需要使用宿主节点上的网络适配器,而不是自己的虚拟网络设备。
 
在这种情况下,这个pod可以使用宿主节点的网络接口,而不是拥有自己独立的网络。这意味着这个pod没有自己的IP地址;如果这个pod中的某一进程绑定了某个端口,那么该进程将被绑定到宿主节点的端口上。
 
配置清单     
技术分享图片
apiVersion: vl
  kind: Pod
  metadata:
    name: pod-with-host-network
spec:
  hostNetwork: true                #使用宿主节点的网络命名空间
  containers
  - name. dfse
  image: asdf
  command : ["/bin/sleep”,1000000”] 
View Code

通过将pod  spec中的hostNetwork设置为true实现。

 

二、绑定宿主节点上的端口而不使用宿主节点的网络命名空间

通过配置 pod spec containers ports 字段中某个容器某一端口的 hostPort 属性来实现。
技术分享图片
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: docker.io/nginx
    name: asdf
    ports:
    - containersPorts: 8080          #可以通过pod  的Ip:8080 访问该pod 
      hostPort: 9000              #也可以通过Pod 所在节点的9000访问该pod
     protocol: TCP
View Code

 

三、hostPort pod 和通过 Node Port 服务暴露的 pod 区别

对于使用 hostPort ,到达宿主节点的端口的连接会被直接转发到 pod 的对应端口上:然而在 Node Port 服务中,到达宿主节点的端口的连接将被转发到随机选取的 pod 上(这个 pod 可能在其他节点上)。另外一个区别是,对于使用 hostPort 的pod ,仅有运行了这类 pod 的节点会绑定对应的端口;而 Node Port 类型的服务会在所有的节点上绑定端口,即使这个节点上没有运行对应的 pod。
还有一个区别就是 hostPort 的 pod 绑定了宿主节点上的 个特定端口,每个宿主节点只能调度一个这样的 pod 实例,因为两个进程不能绑定宿主机上的同一个端口。
 
Tips:
host Port 功能最初是用于暴露通过 DeamonSet 部署在每个节点上的系统服务。最初,这个功能也用于保证 pod 两个副本不被调度到同一节点上,但是现在有更好的方法来实现这一需求。
 

四、使用宿主节点的 PID IPC 命名空间

pod spec 中的 hostPID host IPC 选项与 hostNetwork 相似。当它们被设置为 true 时, pod 中的容器会使用宿主节点的 PID IPC 名空间 ,分别允许它们看到宿主机上的全部进程,或通过 IPC 机制与它们通信
技术分享图片
apiVersion: v1
kind: Pod
metadata:
  name: pod-with-host-pid-and-ipc
spec:
  hostPID: true
  hostIPC: true
  containers:
  ... ...
View Code

配置节点的安全上下文

除了让 pod 使用宿主节点的 Linux 命名空间,还可以在 pod 或其所属容器的描述中通过 security Context 选项配置其他与安全性相关的特性。这个选项可以运用于整个 pod ,或者每个 pod 中单独的容器

安全上下文中可以配置的内容

技术分享图片
指定容器中运行进程的用户(用户ID)
  阻止容器使用 root 户运行(容器的默认运行用户通常在其镜像中指定,所以可能需要阻止容器 root 用户运行)
  
  使用特权模式运行容器,使其对宿主节点的内核具有完全的访问权限
  
  与以上相反,通过添加或禁用内核功能,配置细粒度的内核访问权限
  
  设置 SELinux (Security Enhaced Linux 安全增强型 Linux )选项,加强对容器的限制。
  
  阻止进程写入容器的根文件系统
View Code

 

 

 

pod 权限与网络安全限制

原文:https://www.cnblogs.com/fanggege/p/12204952.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!