K8s进阶6——pod安全上下文(1),重难点整理

这篇具有很好参考价值的文章主要介绍了K8s进阶6——pod安全上下文(1),重难点整理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2.创建pod,使用安全上下文指定普通用户id。

[root@k8s-master1 flask-demo]# cat deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: qingjun
name: qingjun
spec:
replicas: 1
selector:
matchLabels:
app: qingjun
template:
metadata:
labels:
app: qingjun
spec:
containers:

  • image: 192.168.130.152/qingjun/flask-demo:v3
    name: flask-demo
    securityContext: ##指定普通用户id。
    runAsUser: 1000 ##这里的id必须是构建镜像里存在的用户id,创建用户时不指定id默认就是从1000开始。

[root@k8s-master1 flask-demo]# kubectl apply -f deploy.yaml

3.进入pod容器查看,是以普通用户id为1000的qingjun用户启用程序。
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

4.若构建镜像时没有提前创建普通用户,则在pod.yaml里指定安全上下文创建的容器程序里的普通用户id就是从1000开始。

##构建镜像没有提前创建普通用户。
[root@k8s-master1 ~]# cat dockerfile
FROM python
RUN mkdir /data/www -p
COPY . /data/www
RUN pip install flask -i https://mirrors.aliyun.com/pypi/simple/
WORKDIR /data/www
CMD python qingjun.py
[root@k8s-master1 ~]# docker build -t flask-demo:v4 .

##新镜像推送到镜像仓库。
[root@k8s-master1 ~]# docker tag flask-demo:v4 192.168.130.152/qingjun/flask-demo:v4
[root@k8s-master1 ~]# docker push 192.168.130.152/qingjun/flask-demo:v4

##使用新镜像运行一个容器,进入容器查看是否是默认的root用户启动程序的。
[root@k8s-master1 ~]# docker run -d --name=qingjun1 192.168.130.152/qingjun/flask-demo:v4
[root@k8s-master1 ~]# docker exec -it qingjun1 /bin/bash

##创建一个pod,使用安全上下文指定普通用户id启动。
[root@k8s-master1 ~]# cat deploy2.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: qingjun1
name: qingjun1
spec:
replicas: 1
selector:
matchLabels:
app: qingjun1
template:
metadata:
labels:
app: qingjun1
spec:
containers:

  • image: 192.168.130.152/qingjun/flask-demo:v4
    name: flask-demo1
    securityContext: ##指定普通用户id。
    runAsUser: 1000 ##这里的id必须是构建镜像里存在的用户id,创建用户时不指定id默认就是从1000开始。

##导入yaml,进入pod容器查看是否是用户id为1000的普通用户启动的容器。
[root@k8s-master1 ~]# kubectl apply -f deploy2.yaml

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

1.3 案例2

背景:

  • 容器中有些应用程序可能需要访问宿主机设备、修改内核等需求,默认情况下,容器没有这个能力,这时可以考虑给容器设置特权模式。

需求:

  • 避免使用特权容器。

启用特权模式:

  • docker方式:容器时指定–privileged参数,表示该容器内的程序是以root用户启动,跟在宿主机上用root用户启动一个进程完全没有区别,都可以调用内核的所有参数。
  • K8s方式:在pod安全上下文设置参数

containers:

  • image: 192.168.130.152/qingjun/flask-demo:v3
    name: web
    securityContext:
    privileged: true

注意事项:

  • 启用特权模式就意味着,你要为容器提供了访问Linux内核的所有能力,这是很危险的,为了减少系统调用的供给,可以使用Capabilities为容器赋予仅所需的能力。

1.在deployment.yaml文件中添加此参数,重新构建pod容器就会生效。
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

1.4 Linux Capabilities方案

基本了解:

  • Capabilities 的出现就是弥补直接在deployment.yaml中指定特权从而导致权限过大的弊端。
  • 它是一个内核级别的权限调用解决方案,它允许对内核调用权限进行更细粒度的控制,而不是简单地以 root 身份能力授权,但比之前讲的Seccomp限制的容器进程系统调用更粗略一些。
  • Capabilities 包括更改文件权限、控制网络子系统和执行系统管理等功能。在pod安全上下文中添加或删除Capabilities,可以做到容器精细化权限控制。

注意事项:

  • Linux 权能常数定义的形式为 CAP_XXX。但是 container清单中列举权能时,需要将权能名称中的 CAP_ 部分去掉。
  • 例如,要添加 CAP_SYS_TIME, 可在权能列表中添加 SYS_TIME。

1.查看linux Capability权能。

[root@k8s-master1 ~]# yum install man-pages
[root@k8s-master1 ~]# man capabilities

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

capability权能名称 释义
CAP_AUDIT_CONTROL 启用和禁用内核审计;改变审计过滤规则;检索审计状态和过滤规则
CAP_AUDIT_READ 允许通过 multicast netlink 套接字读取审计日志
CAP_AUDIT_WRITE 将记录写入内核审计日志
CAP_BLOCK_SUSPEND 使用可以阻止系统挂起的特性
CAP_CHOWN 修改文件所有者的权限
CAP_DAC_OVERRIDE 忽略文件的 DAC 访问限制
CAP_DAC_READ_SEARCH 忽略文件读及目录搜索的 DAC 访问限制
CAP_FOWNER 忽略文件属主 ID 必须和进程用户 ID 相匹配的限制
CAP_FSETID 允许设置文件的 setuid 位
CAP_IPC_LOCK 允许锁定共享内存片段
CAP_IPC_OWNER 忽略 IPC 所有权检查
CAP_KILL 允许对不属于自己的进程发送信号
CAP_LEASE 允许修改文件锁的 FL_LEASE 标志
CAP_LINUX_IMMUTABLE 允许修改文件的 IMMUTABLE 和 APPEND 属性标志
CAP_MAC_ADMIN 允许 MAC 配置或状态更改
CAP_MAC_OVERRIDE 覆盖 MAC(Mandatory Access Control)
CAP_MKNOD 允许使用 mknod() 系统调用
CAP_NET_ADMIN 允许执行网络管理任务
CAP_NET_BIND_SERVICE 允许绑定到小于 1024 的端口
CAP_NET_BROADCAST 允许网络广播和多播访问
CAP_NET_RAW 允许使用原始套接字
CAP_SETGID 允许改变进程的 GID
CAP_SETFCAP 允许为文件设置任意的 capabilities
CAP_SETPCAP 参考 capabilities man page
CAP_SETUID 允许改变进程的 UID
CAP_SYS_ADMIN 允许执行系统管理任务,如加载或卸载文件系统、设置磁盘配额等
CAP_SYS_BOOT 允许重新启动系统
CAP_SYS_CHROOT 允许使用 chroot() 系统调用
CAP_SYS_MODULE 允许插入和删除内核模块
CAP_SYS_NICE 允许提升优先级及设置其他进程的优先级
CAP_SYS_PACCT 允许执行进程的 BSD 式审计
CAP_SYS_PTRACE 允许跟踪任何进程
CAP_SYS_RAWIO 允许直接访问 /devport、/dev/mem、/dev/kmem 及原始块设备
CAP_SYS_RESOURCE 忽略资源限制
CAP_SYS_TIME 允许改变系统时钟
CAP_SYS_TTY_CONFIG 允许配置 TTY 设备
CAP_SYSLOG 允许使用 syslog() 系统调用
CAP_WAKE_ALARM 允许触发一些能唤醒系统的东西(比如 CLOCK_BOOTTIME_ALARM 计时器)
案例1
  • 需求:添加指定权限。容器默认没有挂载文件系统能力,添加SYS_ADMIN权能增加这个功能。

1.查看当前pod容器里具备哪些内核调用权限。

[root@k8s-master1 flask-demo]# kubectl run centos --image=centos – sleep 24h
[root@k8s-master1 flask-demo]# kubectl exec -it centos – bash
[root@centos /]# capsh --print ##查看权能。

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

2.查看特权用户具备的权限。
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器
3.查看普通用户当前权限。
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器
4.创建一个测试容器,进入容器查看没有挂载权限,因为是普通用户。

[root@k8s-master1 flask-demo]# kubectl run bs --image=busybox – sleep 24h

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器
5.创建pod时指定挂载权限,进入容器测试可以挂载目录。

[root@k8s-master1 flask-demo]# cat pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: cap-pod
spec:
containers:

  • image: busybox
    name: test
    command:
  • sleep
  • 24h
    securityContext:
    capabilities:
    add: [“SYS_ADMIN”] ##添加挂载权限。

[root@k8s-master1 flask-demo]# kubectl apply -f pod.yaml

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

案例2
  • 需求:只读容器文件系统。只读挂载容器文件系统,防止恶意二进制文件创建。

1.容器默认的普通用户是可读可写。
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器
2.deployment.yaml中指定只读参数。

[root@k8s-master1 flask-demo]# cat deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: qingjun
name: qingjun
spec:
replicas: 1
selector:
matchLabels:
app: qingjun
template:
metadata:
labels:
app: qingjun
spec:
containers:

  • image: 192.168.130.152/qingjun/flask-demo:v4
    name: flask-demo
    securityContext:
    runAsUser: 1000
    readOnlyRootFilesystem: true ##添加此行。

[root@k8s-master1 flask-demo]# kubectl apply -f deploy.yaml

3.进入容器查看,没有写权限,只能读。
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

二、pod安全策略

2.1 PSP(已废弃)

概念:

  • PodSecurityPolicy,简称PSP,是K8s中Pod部署时重要的安全校验手段,能够有效地约束应用运行时行为安全。
  • 使用PSP对象定义一组Pod在运行时必须遵循的条件及相关字段的默认值,只有Pod满足这些条件才会被K8s接受。
  • Pod安全策略实现为一个准入控制器,默认没有启用,当启用后会强制实施Pod安全策略,没有满足的Pod将无法创建。因此,建议在启用PSP之前先添加策略并对其授权。

启用Pod安全策略:

  1. kube-apiserver.yaml配置文件添加准入控制器。
  2. 重启kubelet,systemctl restart kubelet
    K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

玩法思路:

  1. 创建SA服务账号。
  2. 将SA绑定到系统内置Role edit。
  3. 创建使用PSP权限的Role qingjun。
  4. 将SA绑定到角色qingjun上。
  5. 定义PodSecurityPolicy策略。

注意事项:

  1. 使用复杂,权限模型存在缺陷,控制不明确,一旦出现问题不好定位,所以将再1.21版本弃用PSP,在1.25版本删除PSP。 弃用官方文献
  2. 替代方案KEP 2579。
  3. 替代外部控制器方案:K-Rail、 Kyverno、 OPA/Gatekeeper 。
2.1.1 安全策略限制维度
配置项 描述
privileged 启动特权容器。
hostPID,hostIPC 使用主机namespaces。
hostNetwork,hostPorts 使用主机网络和端口。
volumes 允许使用的挂载卷类型。
allowedHostPaths 允许hostPath类型挂载卷在主机上挂载的路径,通过pathPrefix字段声明允许挂载的主机路径前缀组。
allowedFlexVolumes 允许使用的指定FlexVolume驱动。
fsGroup 配置Pod中挂载卷使用的辅组ID。
readOnlyRootFilesystem 约束启动Pod使用只读的root文件系统。
runAsUser,runAsGroup,supplementalGroups 指定Pod中容器启动的用户ID以及主组和辅组ID。
allowPrivilegeEscalation,defaultAllowPrivilegeEscalation 约束Pod中是否允许配置allowPrivilegeEscalation=true,该配置会控制setuid的使用,同时控制程序是否可以使用额外的特权系统调用。
defaultAddCapabilities,requiredDropCapabilities,allowedCapabilities 控制Pod中使用的Linux Capabilities。
seLinux 控制Pod使用seLinux配置。
allowedProcMountTypes 控制Pod允许使用的ProcMountTypes。
annotations 配置Pod中容器使用的AppArmor或seccomp。
forbiddenSysctls,allowedUnsafeSysctls 控制Pod中容器使用的sysctl配置。

2.2 OPA Gatekeeper方案

前提了解:

  • OPA(Open Policy Agent):是一个开源的、通用策略引擎,可以将策略编写为代码。提供一个种高级声明性语言-Rego来编写策略,并把决策这一步骤从复杂的业务逻辑中解耦出来。
  • 是PSP的替代方案,属于外部准入控制器。
  • OPA官网
  • Gatekeeper项目地址
  • Gatekeeper文档

OPA可以用来做什么?

  1. 拒绝不符合条件的YAML部署。
  2. 允许使用哪些仓库中的镜像。
  3. 允许在哪个时间段访问系统。
  4. 等等。

OPA Gatekeeper的概念:

  • Gatekeeper 是基于 OPA的一个 Kubernetes 策略解决方案,可替代PSP或者部分RBAC功能。因为OPA与K8s对接偏向于底层,不好使用,所以社区就基于OPA引擎开发了OPA Gatekeeper的解决方案,方便使用。
  • 当在集群中部署了Gatekeeper组件,APIServer所有的创建、更新或者删除操作都会触发Gatekeeper来处理,如果不满足策略则拒绝。

工作流程图:
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

2.2.1 安装Gatekeeper

1.下载准备安装yaml文件,下载地址
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器
2.导入文件一键部署,并查看。

[root@k8s-master1 opa]# kubectl apply -f gatekeeper.yaml

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

2.2.2 编写策略

Gatekeeper的策略由两个资源对象组成:

  1. Template模板:在后面我们需要自定义限制策略,策略是怎么实现的就需要我们先写一个实现逻辑,这里就把这个实现逻辑称之为模板,使用rego语言。
  2. Contsraint约束:自定义限制策略,当我们创建任何一个资源时可以先通过这个约束来进行过滤处理,违反约束就代表能限制你创建自动动作,不让你创建这个资源。所以约束就是负责K8s资源对象的过滤或者为Template模板提供输入参数。

实现思路:

  1. 先使用rego语言编写Template模板,在这个模板里自定义实现逻辑,就相当于写一个脚本逻辑。
  2. 自定义Constraint约束,约束格式类似rbac授权那种,要限制什么资源,这个资源在什么组。
  3. 当我们创建一个资源时,比如创建deployment时,若是触发了约束,则就会带入到模板里,看是否能违反约束,若是违反约束就相当于出发了开关,不让你创建deployment。

模板核心字段释义:

  • 字段containers = input.review.object.spec.template.spec.containers
    • input.review.object :抓取约束模板里自定义的限制资源。比如我在约束模板里限制deployment资源,这里就是是抓取的deployment资源。
    • .spec.template.spec.containers:代表获取资源对象的yaml文件里.spec.template.spec.containers内容,可以用kubectl explan获取。比如我在约束模板里限制的是deployment资源,那么当我创建deployment资源时就会抓取deployment.yaml文件里的spec.template.spec.containers下的内容,如下图,就是获取下图中的红框内容。此时拿到这块内容,再根据模板里的逻辑进行判断,看最后是否输出的true,若是则代表违反约束,你就不能创建deployment资源。
      K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器
2.2.3 案例1

需求

  • 禁止容器启用特权。若用户创建的资源里有开启特权容器参数,则限制用户不能创建资源。

实现代码逻辑:

  • violation函数返回的是布尔值True或者False。我取deployment.yaml文件里的特权容器参数,若返回值为false,则不会继续往下执行函数,属于放行不做拦截;若返回值为true,则说明整个函数表达式已通过,代表违反约束需要拦截,就相当于触碰到开关起到拦截作用。

1.编写模板和约束,在模板里使用rego脚本匹配约束里面的的资源。

##模板
[root@k8s-master1 opa]# cat privileged_tpl.yaml
apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
name: qingjun
spec:
crd:
spec:
names:
kind: qingjun
targets:

  • target: admission.k8s.gatekeeper.sh
    rego: | ##自定义匹配策略,使用rego语言编写。
    package admission ##传入一个依赖包,唯一的,类似命名空间。
    violation[{“msg”: msg}] { ##定义一个key-value变量。
    containers = input.review.object.spec.template.spec.containers ##获取自定义对象的pod.yaml里对应的字段。
    c_name := containers[0].name ##获取第一个容器名称并赋予变量名为c_name,0代表第一个。
    containers[0].securityContext.privileged ##获取第一个容器的securityContext.privileged值。这里是判断返回是否为true,返回true说明违反约束。
    msg := sprintf(“提示:'%v’容器禁止启用特权!”,[c_name]) ##打印结果。
    }
    [root@k8s-master1 opa]# kubectl apply -f privileged_tpl.yaml

##约束
[root@k8s-master1 opa]# cat privileged_constraints.yaml
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: qingjun
metadata:
name: baimu
spec:
match:
kinds:

  • apiGroups: [“apps”]
    kinds:
  • “Deployment”
  • “DaemonSet”
  • “StatefulSet”
    [root@k8s-master1 opa]# kubectl apply -f privileged_constraints.yaml

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

同时每个成长路线对应的板块都有配套的视频提供:

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

因篇幅有限,仅展示部分资料

网络安全面试题

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

绿盟护网行动

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

还有大家最喜欢的黑客技术

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

网络安全源码合集+工具包

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

绿盟护网行动

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

还有大家最喜欢的黑客技术

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

网络安全源码合集+工具包

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

K8s进阶6——pod安全上下文(1),重难点整理,2024年程序员学习,kubernetes,安全,容器

所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-TNHroi9i-1712501698321)]文章来源地址https://www.toymoban.com/news/detail-859280.html

到了这里,关于K8s进阶6——pod安全上下文(1),重难点整理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【 K8S 】 Pod 进阶

    当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小,以及其他类型的资源。 当为 Pod 中的容器指定了 request 资源时,代表容器运行所需的最小资源量,调度器就使用该信息来决定将 Pod 调度到哪个节点上。当还为容器指定了

    2024年02月13日
    浏览(32)
  • 【k8s】pod进阶

    当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小 ,以及其他类型的资源。 当为 Pod 中的容器指定了 request 资源时,调度器就使用该信息来决定将 Pod 调度到哪个节点上。当还为容器指定了 limit 资源时,kubelet 就会确保运行

    2024年02月06日
    浏览(54)
  • k8s---pod进阶

    //资源限制 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小,以及其他类型的资源。 当为 Pod 中的容器指定了 request 资源时,调度器就使用该信息来决定将 Pod 调度到哪个节点上。当还为容器指定了 limit 资源时,kubelet 就会

    2024年02月06日
    浏览(41)
  • K8S之Pod详解与进阶

    1.pod定义 Pod 是 K8S 最小的创建和运行管理单元 2.pause容器作用 3.Pod 的 3 种类型 4.Pod 的 3 种容器 5.Pod 的 3 种镜像拉取策略 6.Pod 的 3 种容器重启策略 1.资源限制 2.Pod 容器的 3 种探针(健康检查) 3.探针的 3 种探测方式 探针参数 4.Pod 应用容器生命周期的启动动作和退出动作

    2024年02月13日
    浏览(39)
  • K8s进阶之路-Pod的生命周期

    Pod创建过程: 首先创建一个pod,然后创建一个API Server 和 Etcd【把创建出来的信息存储在etcd中】 然后创建 Scheduler,监控API Server是否有新的Pod,如果有的话,会通过调度算法,把pod调度某个node上 在node节点,会通过 kubelet -- apiserver 读取etcd 拿到分配在当前node节点上的pod,然后

    2024年02月20日
    浏览(48)
  • SQLServerException: 服务器主体 “dwCDC“ 无法在当前安全上下文下访问数据库 “dw“

    在Debezium使用过程中,有时候会遇到各种各样的错误和异常。其中之一是\\\"SQLServerException: 服务器主体 ‘dwCDC’ 无法在当前安全上下文下访问数据库 ‘dw’\\\"。本文将详细介绍这个错误的原因和解决方法,并提供相应的源代码示例。 这个错误通常发生在使用Debezium连接到SQL Serv

    2024年02月03日
    浏览(48)
  • 【python】flask执行上下文context,请求上下文和应用上下文原理解析

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开

    2024年03月26日
    浏览(64)
  • k8s进阶之路-pod探针:容器内的监控机制,检测应用是否存活

    配合Pod重启策略:  RestartPolicy 应用程序是否启动完成: 3.startupProbe启动探针1.16:排他性          如果三个都配置了,会优先启动,会禁用前两个反馈成功后,才会启动以下两个 应用启动成功后: 1.LivenessProbe存活探针--故障自动恢复:         如果容器挂掉了,会检测是

    2024年02月19日
    浏览(55)
  • 超长上下文处理:基于Transformer上下文处理常见方法梳理

    原文链接:芝士AI吃鱼 目前已经采用多种方法来增加Transformer的上下文长度,主要侧重于缓解注意力计算的二次复杂度。 例如,Transformer-XL通过缓存先前的上下文,并允许随着层数的增加线性扩展上下文。Longformer采用了一种注意力机制,使得token稀疏地关注远距离的token,从而

    2024年02月13日
    浏览(51)
  • 无限上下文,多级内存管理!突破ChatGPT等大语言模型上下文限制

    目前,ChatGPT、Llama 2、文心一言等主流大语言模型,因技术架构的问题上下文输入一直受到限制,即便是Claude 最多只支持10万token输入,这对于解读上百页报告、书籍、论文来说非常不方便。 为了解决这一难题,加州伯克利分校受操作系统的内存管理机制启发,提出了MemGPT。

    2024年02月06日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包