• 12-资源注解annotations和安全行下文securityContext(了解即可)


    一、资源注解annotations

            资源注解,annotations就是对资源进行注释;

            应用场景:

            给资源(例如pod资源)提供配置信息,类似于帮助信息;

            早期使用比较多,很多开源组件一般都会使用;

    1,编辑一个pod资源清单加资源注解案例

    [root@k8s231 annottations]# cat pod.yaml 
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-01
      labels: 
        k8s: xinjizhiwa
        kubernetes: k8s
      #资源注解(也是键值对写法)
      annotations:
        help: is a playbook,please user know it
        a: b
        b: c
        c: d
    spec: 
      containers:
      - name: c1
        image: centos:7
        command:
        - "tail"
        - "-f"
        - "/etc/hosts"

    2,创建pod资源

    [root@k8s231 annottations]# kubectl apply -f pod.yaml

    3,查看资源注解

    [root@k8s231 annottations]# kubectl describe pods pod-01 
    Name:         pod-01
    Namespace:    default
    Priority:     0
    Node:         k8s233/10.0.0.233
    Start Time:   Thu, 15 Feb 2024 19:14:00 +0800
    Labels:       k8s=xinjizhiwa
                  kubernetes=k8s

    #资源注解位置;
    Annotations:  a: b
                  b: c
                  c: d
                  help: is a playbook,please user know it

    ..................

    二、安全上下文securitycontext

            当我们运行一个pod的容器的时候,存在一个风险,就是当有人登录到容器当中时,使用root用户登录,并修改文件等危险操作,会导致业务出现严重的安全问题,因此,k8s提供了安全上下文securitycontext,用来控制有人登录到容器当中进行的操作;

    1,编辑pod资源清单配置安全上下文

    [root@k8s231 securitycontext]# cat pod.yaml 
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-centos7
    spec:
      containers:
      - name: c1
        image: centos:7
        command: ["tail","-f","/etc/hosts"]
        #配置pod的容器中安全相关属性
        securityContext:
          #配置容器为特权容器,若配置了特权容器,可能对capabilities测试有影响;
          #privileged: true
          #自定义linux内核特性
          capabilities:
            #添加所有的linux内核功能
            add:
            - ALL
            #移除指定linux内核特性
            drop:
            #代表禁用网络管理的配置
            - NET_ADMIN
            #代表禁用uid和gid,表示你无法使用chown命令;
            - CHOWN
            #禁用chroot命令
            - SYS_CHROOT
          #如果容器的进程以root身份运行,则禁止容器启动;
          runAsNonRoot: true
          #指定运行容器的用户uid,注意该用户的uid必须事先存在于镜像中;
          runAsUser: 666

    2,创建pod

    [root@k8s231 securitycontext]# kubectl apply -f pod.yaml

    3,进入容器查看是否配置成功

    [root@k8s231 securitycontext]# kubectl exec -it pod-centos7 -- sh
    sh-4.2$ whoami
    whoami: cannot find name for user ID 666
    sh-4.2$ cd /root
    sh-4.2$ ls -l
    total 4
    -rw------- 1 root root 3416 Nov 13  2020 anaconda-ks.cfg
    sh-4.2$ touch 1.txt
    touch: cannot touch '1.txt': Permission denied

    可以看见,没有这个666的用户,什么都干不了;

    至此,安全上下文于资源注解完毕;

  • 相关阅读:
    Matplotlib网格制作
    默认搜索引擎怎么变成百度呀,谁能告诉我
    简单了解一下:NodeJS的fs文件系统
    阿里P8现身说法,解密“架构”原理与实战笔记:从分布式到微服务
    全志R128芯片RTOS调试指南
    使用uniapp实现小程序获取wifi并连接
    FFmpeg入门----编译环境配置
    【共读】企业信息安全建设与运维指南(二)
    学习nginx,这一篇就够了
    【毕业设计】26-基于单片机心跳体温血压系统仿真设计(原理图+仿真+演示视频+论文)
  • 原文地址:https://blog.csdn.net/2302_79199605/article/details/136122466