一、资源注解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的用户,什么都干不了;
至此,安全上下文于资源注解完毕;