首页 > 其他分享 >什么是特权容器?如何在k8s中运行特权容器?

什么是特权容器?如何在k8s中运行特权容器?

时间:2023-05-31 14:00:51浏览次数:41  
标签:容器 特权 tcp ipv4 time net k8s keepalive


1、什么是特权容器?

 

特权容器(Privileged Container),就是可以像在主机上的操作一样,几乎可以对主机进行任何的操作,比如,要修改容器的内核参数,是要对容器的网络命名空间进行修改的,默认是不允许修改的

 

如果将容器变为了特权容器,就可以进行修改了。

 

比如,calico容器,在启动的时候初始化容器,要对容器的网络进行设置,就需要特权,对操作系统的设备,命名空间进行修改,这个时候,就需要特权容器

 

换句话说,就是将容器提权

 

比较官方的说法

特权容器是一种具有主机的所有功能的容器,它解除了常规容器的所有限制。

实际上,这意味着特权容器可以执行几乎所有可以直接在主机上执行的操作

 

 

2、如何在k8s里面,将容器设置为特权容器?

 

在k8s中,将pod中的容器设置为特权容器的方法是,在securityContext中加入参数

        securityContext:
          privileged: true

 

 

具体的位置:

 

注意:是在container级别,不是在pod级别

 

下面的,securityContext: {} 可以设置其他的参数。

 

如:

        sysctls:
        - name: net.ipv4.tcp_keepalive_time
          value: "600"

 

但是,这个设置,必须在kubelet中开启安全参数允许,才能设置

allowedUnsafeSysctls:
- "net.ipv4.tcp_keepalive_time"

 

 

3、测试使用

 

OK,这里通过一个poststart脚本,修改容器的内核参数

        lifecycle:
          postStart:
            exec:
              command:
              - /bin/sh
              - -c
              - sysctl -w net.ipv4.tcp_keepalive_time=600

 

 

具体位置:

 

修改后,进入容器,查看内核参数:

[root@nccztsjb-node-23 ~]# kubectl exec -it php-apache-5b67555b84-z2zsp -- sysctl -a | grep net.ipv4.tcp_keepalive_time
net.ipv4.tcp_keepalive_time = 600
[root@nccztsjb-node-23 ~]# 

 

 

参数已经被正确的修改了

 

如果不加上privileged: true,启动容器就会报错:

php-apache-5b67555b84-z2zsp         1/1     Running             0               2m49s
[root@nccztsjb-node-23 ~]# kubectl describe pod php-apache-57cb8d6d67-fln6m 
Name:           php-apache-57cb8d6d67-fln6m
Namespace:      default
Priority:       0
...中间省略...
  Normal   Created              16s   kubelet            Created container php-apache
  Normal   Started              16s   kubelet            Started container php-apache
  Warning  FailedPostStartHook  16s   kubelet            Exec lifecycle hook ([/bin/sh -c sysctl -w net.ipv4.tcp_keepalive_time=600]) for Container "php-apache" in Pod "php-apache-57cb8d6d67-fln6m_default(52086416-cd89-4e28-bb1c-3724382f3f34)" failed - error: command '/bin/sh -c sysctl -w net.ipv4.tcp_keepalive_time=600' exited with 255: sysctl: setting key "net.ipv4.tcp_keepalive_time": Read-only file system
, message: "sysctl: setting key \"net.ipv4.tcp_keepalive_time\": Read-only file system\n"
  Normal  Killing  16s  kubelet  FailedPostStartHook

 

sysctl: setting key \"net.ipv4.tcp_keepalive_time\": Read-only file system\n"

只读文件系统,无法修改内核参数。

标签:容器,特权,tcp,ipv4,time,net,k8s,keepalive
From: https://www.cnblogs.com/chuanzhang053/p/17445923.html

相关文章

  • windows访问k8s
    windows访问ekspods安装AWSCLI网址为https://awscli.amazonaws.com/AWSCLIV2.msi。查看aws版本。aws--version配置AWSCLI凭证eksctl和AWSCLI均要求您在环境中配置AWS凭证。awsconfigure命令是设置安装以供一般使用的最快方法。$awsconfigureAWSAccess......
  • 跨平台开发的优势:ReactNative与小程序容器
    ​结合ReactNative和小程序容器技术,开发者可以通过热重载和快速迭代提高开发效率,并实现统一的代码和逻辑,简化维护和升级过程。这种技术应用价值使得开发者能够更灵活地构建跨平台应用程序,并充分利用多个生态系统的优势。ReactNative与小程序容器技术的结合为移动应用开发提供......
  • docker容器踩过的坑:在idea可以运行,放到tomcat出现异常
    1.docker里边安装tomcat,tomcat会自带jdk版本,使用也是默认的版本,要注意tomcat与是否与想要jdk版本的一致,在创建容器时就需要挂载jdk版本指令:dockerrun-id--name=c_tomcat-p8080:8080-v$PWD:/usr/local/tomcat/webapps-v/opt/jdk1.8.0_152:/opt/java/openjdktomcat ......
  • K8s如何查看pod崩溃前的日志及其
    K8s如何查看pod崩溃前的日志及其原理lulu的云原生笔记 K8S中文社区 2023-05-3019:15 发表于湖南场景当pod处于crash状态的时候,容器不断重启,此时用 kubeletlogs 可能出现一直捕捉不到日志。解决方法:kubectlprevious 参数作用:Iftrue,printthelogsfortheprevio......
  • k8s节点宕机排查
    查看集群信息发现节点宕机 排查:1、查看服务器的物理环境free-mh/df-h2、查看内存是否溢出,磁盘空间是否够用,经查均在正常使用范围内;3、top查看cpu使用状态,在可用范围内;4、再查master组件scheduer,controller-manager,apiserver等都在正常运行;5、查看node详细信息[root@master~......
  • k8s常用的命令
    下面是一些常用的Kubernetes(K8s)命令,以及它们的简要说明。这些命令可以帮助您管理和操作Kubernetes集群中的资源。集群管理命令:kubectlcluster-info:显示集群的基本信息。kubectlconfiguse-context<context_name>:切换到指定的上下文。kubectlgetnodes:列出集群中......
  • 安全扫描容器如何挂载被扫描容器的文件系统?
    安全扫描容器需要访问被扫描容器的文件系统,以便进行漏洞扫描、恶意软件检测等安全检查。为了实现这一目的,可以使用Docker的`--volumes-from`选项挂载被扫描容器的文件系统,或者使用Docker的`--mount`选项挂载被扫描容器的指定目录。下面分别介绍这两种方法的具体实现:1.使用`--vol......
  • 小程序容器与PWA的完美结合:提升应用性能与用户体验
    PWA代表“渐进式网络应用”(ProgressiveWebApplication)。它是一种结合了网页和移动应用程序功能的技术概念。PWA旨在提供类似于原生应用程序的用户体验,包括离线访问、推送通知、后台同步等功能,同时又具有网页的优势,如跨平台、无需下载安装等。 PWA使用现代的Web技术来创建......
  • k8s源码中给操作添加追踪功能
    不是很能看懂,但是又觉得很有用,不定什么时候能用到,先记录到这里吧operation.go/*Copyright2014GoogleInc.Allrightsreserved.LicensedundertheApacheLicense,Version2.0(the"License");youmaynotusethisfileexceptincompliancewiththeLicense.Youmay......
  • docker - 关闭容器服务
    查看正在允许的容器服务列表dockerps CONTAINERID就是容器服务id关闭指令dockerstop【服务id】 ......