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的用户,什么都干不了;

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

你可能感兴趣的:(k8s系列,安全)