当前位置: 首页 > wzjs >正文

云南凡科建站哪家好营销型公司网站建设

云南凡科建站哪家好,营销型公司网站建设,哪个网站的pc端是用vue做的,怎样做网站漂浮云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…

云原生学习路线导航页(持续更新中)

  • kubernetes学习系列快捷链接
    • Kubernetes架构原则和对象设计(一)
    • Kubernetes架构原则和对象设计(二)
    • Kubernetes架构原则和对象设计(三)
    • Kubernetes控制平面组件:etcd(一)
    • Kubernetes控制平面组件:etcd(二)
    • Kubernetes控制平面组件:etcd常用配置参数
    • Kubernetes控制平面组件:etcd高可用集群搭建
    • Kubernetes控制平面组件:etcd高可用解决方案
    • Kubernetes控制平面组件:Kubernetes如何使用etcd
    • Kubernetes控制平面组件:API Server详解(一)

本文主要对kubernetes的控制面组件API Server 的准入控制进行详细介绍,涵盖准入控制的基础概念、与认证授权的辨析、常见插件、自定义插件开发流程、mutatingwebhookconfigurations实操案例等

  • 希望大家多多 点赞 关注 评论 收藏,作者会更有动力编写技术文章

1.什么是准入控制

在这里插入图片描述

2.认证、鉴权、准入 辨析

  • 认证
    • 认证是知道是哪个用户/group,判断请求身份
  • 鉴权
    • 鉴权是判断该用户是否有权限进行该操作,判断操作权限
  • 准入
    • 准入是对请求的具体内容进行处理,判断请求内容的合法性,还可以对请求内容进行变形、校验

3.准入控制插件

  • 使用apiserver启动参数:--enable-admission-plugins 指定开启插件
    在这里插入图片描述
    在这里插入图片描述

  • AlwaysPullImages:强制所有新创建的 Pod ​​始终拉取最新版本的容器镜像​​,覆盖用户显式设置的 spec.imagePullPolicy 策略,统一设置为 Always。imagePullPolicy有3种值:

    • Always:总是尝试拉取最新的镜像,即使集群中已经存在该image。拖慢效率,但能保证每次使用的都是最新镜像
    • IfNotPresent:如果集群中已经存在该image,就直接使用。效率高,但是如果本地image被人改过只是tag保持一致,就会出现误用。
    • Never:从不远程拉取,本地有就用,本地没有就起不来
  • ImagePolicyWebhook:可以用webhook对image进行更多的控制,比如安全层面控制,判断下image是否通过了安全扫描,是否出具了安全报告等等

4.怎么查看有哪些准入插件被开启?

  • 查看默认开启的插件
    • 在 apiserver pod中执行命令:kube-apiserver --help,即可查看默认值
    • 其中 --enable-admission-pluginsdefault enabled ones 就是默认开启的插件
    kubectl exec -it kube-apiserver-vm-226-235-tencentos -n kube-system -- kube-apiserver -h | grep enable-admission-plugins--admission-control strings              Admission is divided into two phases. In the first phase, only mutating admission plugins run. In the second phase, only validating admission plugins run. The names in the below list may represent a validating plugin, a mutating plugin, or both. The order of plugins in which they are passed to this flag does not matter. Comma-delimited list of: AlwaysAdmit, AlwaysDeny, AlwaysPullImages, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, DefaultStorageClass, DefaultTolerationSeconds, DenyEscalatingExec, DenyExecOnPrivileged, EventRateLimit, ExtendedResourceToleration, ImagePolicyWebhook, LimitPodHardAntiAffinityTopology, LimitRanger, MutatingAdmissionWebhook, NamespaceAutoProvision, NamespaceExists, NamespaceLifecycle, NodeRestriction, OwnerReferencesPermissionEnforcement, PersistentVolumeClaimResize, PersistentVolumeLabel, PodNodeSelector, PodPreset, PodSecurityPolicy, PodTolerationRestriction, Priority, ResourceQuota, RuntimeClass, SecurityContextDeny, ServiceAccount, StorageObjectInUseProtection, TaintNodesByCondition, ValidatingAdmissionWebhook. (DEPRECATED: Use --enable-admission-plugins or --disable-admission-plugins instead. Will be removed in a future version.)--enable-admission-plugins strings       admission plugins that should be enabled in addition to default enabled ones (NamespaceLifecycle, LimitRanger, ServiceAccount, TaintNodesByCondition, Priority, DefaultTolerationSeconds, DefaultStorageClass, StorageObjectInUseProtection, PersistentVolumeClaimResize, RuntimeClass, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, MutatingAdmissionWebhook, ValidatingAdmissionWebhook, ResourceQuota). Comma-delimited list of admission plugins: AlwaysAdmit, AlwaysDeny, AlwaysPullImages, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, DefaultStorageClass, DefaultTolerationSeconds, DenyEscalatingExec, DenyExecOnPrivileged, EventRateLimit, ExtendedResourceToleration, ImagePolicyWebhook, LimitPodHardAntiAffinityTopology, LimitRanger, MutatingAdmissionWebhook, NamespaceAutoProvision, NamespaceExists, NamespaceLifecycle, NodeRestriction, OwnerReferencesPermissionEnforcement, PersistentVolumeClaimResize, PersistentVolumeLabel, PodNodeSelector, PodPreset, PodSecurityPolicy, PodTolerationRestriction, Priority, ResourceQuota, RuntimeClass, SecurityContextDeny, ServiceAccount, StorageObjectInUseProtection, TaintNodesByCondition, ValidatingAdmissionWebhook. The order of plugins in this flag does not matter.
    
  • 查看有哪些被主动开启
    ps -ef | grep apiserver,查看 --enable-admission-plugins 即可

5.准入控制插件开发

在这里插入图片描述

  • 自定义准入控制插件,生效流程
    • 首先使用 MutatingWebhookConfiguration/ValidatingWebhookConguration 声明第三方准入服务的url、caBundle、rules等信息
    • 其次,apiserver在处理请求时,通过webhook的rules判断是否需要调用某一个webhook指定的第三方准入服务。
    • 如果需要调用,apiserver就会封装请求为AdmissionReview结构发给 第三方准入服务AdmissionController
    • AdmissionController处理之后,返回响应给apiserver
    • apiserver根据响应判断是否通过 准入验证
  • Apiserver 的配置文件参数:--admission-control-config-file
    • 在开启ImagePolicyWebhook或EventRateLimit时,通过该参数指定webhook的配置
    • 该配置与MutatingWebhookConfiguration/ValidatingWebhookConguration并无直接合作关系

注:apiserver只会以https的方式请求webhook,所以每一个MutatingWebhookConfiguration/ValidatingWebhookConguration都要配置caBundle

6.准入控制实践案例

6.1.多租户下控制ns只能被指定用户访问

在这里插入图片描述

  • 在多租户系统设计中,我们可通过准入控制,在ns create阶段自动为ns绑定用户权限,实现:只有指定用户才可以访问某个ns。具体实现如下:
    • 在ns创建时,通过一个mutatingwebhookconfigurations变形webhook插件,将用户信息写入ns的annotation
    • 在访问ns下资源时,判断请求用户信息是否存在于ns的annotation,即可判断当前用户是否有权限访问该ns
  • mutatingwebhookconfigurations编写如下
    在这里插入图片描述

6.2.namespace的自动配额管理

在这里插入图片描述

  • 比如:限制一个ns下configmap数量为1,那么当尝试在该ns下创建第2个cm时就会报错

在这里插入图片描述

7.mutatingwebhookconfigurations实操案例

参考:https://github.com/cncamp/101/blob/master/module6/mutatingwebhook/readme.MD

7.1.克隆mutatingwebhook demo项目

  • 该项目会对 非kube-system、非kube-public ns下的所有pod做变形操作。变形操作如下。
  • 项目地址:https://github.com/cncamp/admission-controller-webhook-demo
    git clone https://github.com/cncamp/admission-controller-webhook-demo.git
    

在这里插入图片描述

7.2.Deploy webhook

  • deploy.sh脚本,会先生成ca证书,将之写入secret中。然后创建deploy、secret、mutatingwebhookconfigurations等资源
  • mutatingwebhookconfigurations 会读取到创建好的ca,写入自己的caBundle
    cd admission-controller-webhook-demo/
    ./deploy.sh
    

注:由于我们的mutatingwebhookconfigurations会拦截所有非kube ns下的pod创建行为,所以要在webhook deployment创建成功后再让mutatingwebhookconfigurations创建,否则可能会被拦截导致webhook的pod建不出来。这是一个时序问题

7.3.Check webhook status

  • 检查webhook是否已经启动成功
    k get deployment.apps/webhook-server -n webhook-demo
    k get po -n webhook-demo
    

7.4.Create demo pod and verify

  • 创建一个默认的pod,nsdefault,没有配置SecurityContext,则说明 runAsNotRootnil、runAsUser==nil
  • 该pod会被变形为 SecurityContext.runAsNotRoottrue、runAsUser1234
kubectl create -f examples/pod-with-defaults.yaml
kubectl get po  pod-with-defaults -oyaml
kubectl logs -f pod-with-defaults
# A pod with no securityContext specified.
# Without the webhook, it would run as user root (0). The webhook mutates it
# to run as the non-root user with uid 1234.
apiVersion: v1
kind: Pod
metadata:name: pod-with-defaultslabels:app: pod-with-defaults
spec:restartPolicy: OnFailurecontainers:- name: busyboximage: busyboxcommand: ["sh", "-c", "echo I am running as user $(id -u)"]
  • 假如你的pod内部有 mkdir等需要root权限才能进行的行为,pod就会执行失败。比如:
    在这里插入图片描述

7.5.More details

https://github.com/cncamp/admission-controller-webhook-demo/blob/main/README.md

常见问题解析

多个webhook如何执行?

参考:Webhook 的执行顺序

  • 多个不同类型webhook:按照 mutatingwebhook -->validatingwebhook 顺序执行
  • 多个相同类型webhook:会按照name字典排序顺序执行
  • 一个mutatingwebhook/validatingwebhook内部指定列表:会按照列表给定顺序执行
  • 设计理念
    • ​​确定性​​:通过固定排序规则(如字典序),确保执行顺序在不同环境中一致,避免随机性导致行为不可预测。
    • ​​无优先级干扰​​:Kubernetes 未提供显式的优先级配置字段,避免因复杂优先级规则引入运维复杂度。
    • ​​原子性操作​​:每个 Webhook 的修改操作是独立的,后执行的 Webhook 可以看到前序 Webhook 的修改结果,因此顺序可能影响最终资源状态。

mutating/validating Webhook挂了是否会影响集群?

  • 会的,如果mutating/validating Webhook本身挂了,所有依赖的请求准入都会超时,都会卡在这一步
  • 因此mutating/validating Webhook本身也是需要高可用的

webhook编写有没有固定框架?

  • 暂无固定框架,可以参考项目来写:https://github.com/cncamp/admission-controller-webhook-demo
http://www.dtcms.com/wzjs/183275.html

相关文章:

  • 龙岗网站建设服务电商平台排行榜前十名
  • 专门做旅游的视频网站有哪些湖北百度推广公司
  • 做推广网站那里好网络营销买什么好
  • 纺织服装板块上市公司网站建设推广软件排行榜前十名
  • 手工活接单正规平台关键词seo公司
  • html5后台网站模板设计公司
  • 最牛的网站建设郑州厉害的seo优化顾问
  • 零售网站开发alexa排名查询
  • 饲料行业怎么做网站html网页制作网站
  • 龙岗-网站建设深圳信科信息流广告是什么
  • 深圳福田大型商城网站建设电子商务网站建设流程
  • 个人备案公司网站个人免费开发app
  • 网站代码上传后无法打开石家庄百度推广优化排名
  • 做网站怎么上词一级造价工程师
  • asp.net网站开发模板开发网站建设
  • asp开源政府网站网站查询ip
  • 淘宝网站详情页怎么做武汉seo群
  • web做网站实验报告做网站推广
  • 医院网站管理办法策划方案网站
  • 项目外包公司到底值不值得去seo的课谁讲的好
  • 网站中链接怎么做安卓优化大师hd
  • 广州小程序开发方案seo智能优化
  • 做网站1008做网站 - 百度2345网址大全设主页
  • wordpress如何自动采集网站图片电商平台排行榜前十名
  • 长沙营销型网站制作费用武汉seo招聘
  • 南京做电商网站的公司简介网络建站流程
  • 北京网站建设价格便宜兰州网络推广关键词优化
  • 免费男人做那个的视频网站seo主管招聘
  • 山西建设局网站首页搜索引擎优化的要点
  • 快速制作效果图软件如何做网站推广及优化