十一、k8s安全机制

k8s作为一个分布式的微服务管理系统,保证集群安全是一个非常重要的任务,

核心-----------api-server

我们围绕集群权限的设置,其实就是设置api-server权限。

围绕api-server的权限机制,分为三个步骤:

1、认证-----------server-account

1)、token,api-server私钥签名的字符串列号,用于访问api-server,server端的认证

2)、ca.crt:ca根证书,用于客户端验证api-server发送的证书

3)、namespace:api-server办法的token来使用指定的命名空间。

认证只是确认双方的通信是可信的,在此基础之上建立通信的连接。

2、鉴权

确定请求方对集群的资源的权限。

RBAC:基于角色的访问控制

k8s1.6之后,默认的鉴权方式

对集群中的资源(pod,deployment,service)和非资源(元信息和资源状态)都可以进行完整的覆盖,权限在运行的时候调整,无需重启api-server。

鉴权的主体:

(1)角色:

ROLE:授权指定命名空间的资源控制权限

ClusterRole:可以对所有命名空间的资源的控制权

(2)角色绑定:

RoleBinding:把角色绑定到主体(命名空间)

ClusterRoleBinding:将集群角色绑定到主体(所有命名空间)

(3)主体的对象:

user:用户

group 用户组

serviceAccount:服务账号

namespace 命名空间

3、准入控制

每一个对于api-server的请求都会有一个准入控制器插件的列表,发送到api-server的请求经过准入控制器插件的检查,检查不通过,请求会被拒绝

官方自带请求控制器:

LimitRanger

resourceQuota

namespaceLifecycle:命名空间的回收机制

创建一个用户,访问指定的命名空间,权限的设置和修改

操作步骤

创建用户,指定密码

设置证书 把三个证书放到这个目录下

给证书权限

创建用户认证的证书

给证书签发密钥

认证

鉴权

k8s重点

1、组件功能api-server

kube-controlllmer-manger 控制器

kube-scheduler 调度器

etcd k8s的数据库,只有api-server可以读写

kube-proxy 节点组件,网络代理,又来自动发现部署的服务(pod),以及把流量分发到指定的pod

网络插件-cni

flannel

calico

kubelet:节点管理器

2、kubectl 常用的命令

kubectl get namespace ns 创建命名空间

kubectl create deployment

kubectl run ----创建pod

rollout history回滚

3、service的类型:

clusterip 默认类型--只能在内部使用,集群内部使用

NodePort 30000-32767

loadBalancer ----内网可以直接访问

loadBalancer

externalName

ingress-----可以处理url请求,对域名可以访问

4、控制器的类型:

deployment

daemonset

statfulset

job

cronjob

5、pod的状态和探针*

启动探针

存活探针

就绪探针

exec

topsocket

httpGet

pending的状态该如何解决?

cacshloopback

pod的重启策略

镜像的拉取策略

6、调度:

亲和性和反亲和性

node有亲和性

pod有亲和和反亲和

污点,容忍

7、配置管理:

secret

configmap*-------如何把配置文件传给pod。configmap的热更新

8、HPA:自动扩缩容

对pod的数量自动增减

一定要有资源限制

limit:

cpu:

menory:

9、数据卷:

emptyDir{}:pod内容器的共享数据

hostPath:pod所在的节点生成一个挂载,每个pod的数据卷是独立的

nfs:所有的pod共享一个目录使用的数据是一致的

pv和pvc:发起一个pvc的请求,使用pv的挂载资源

动态和静态

10、权限控制:

11、普罗米修斯监控

相关推荐
米小虾1 小时前
AI Agent 安全实战指南:当智能体开始"不听话",开发者该如何应对?
人工智能·安全·agent
tntxia14 小时前
网络安全漏洞修复(一)
安全
泯泷2 天前
第 2 篇:设计第一套字节码:Opcode、Instruction 与 Constant Pool
前端·javascript·安全
泯泷2 天前
第 1 篇:从 1 + 2 开始:亲手写出第一台 JSVM
前端·javascript·安全
lichenyang4533 天前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器
lichenyang4533 天前
Docker 学习笔记(三):Docker 网络、bridge、子网和容器互通
docker·容器
lichenyang4533 天前
Docker 学习笔记(二):docker run 的参数到底在控制什么?
docker·容器
运维开发故事6 天前
基于 Arthas 的多集群在线诊断系统设计与实现
kubernetes
Flynt7 天前
npm v12 来了:allowScripts 默认关闭,我的项目差点跑不起来
安全·npm·node.js
Patrick_Wilson8 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js