网站怎么自己做服务器广州制作网站企业
- 作者: 五速梦信息网
- 时间: 2026年03月21日 07:21
当前位置: 首页 > news >正文
网站怎么自己做服务器,广州制作网站企业,设计外包网站,wordpress模板外贸目录 插叙前言一、思考和原理二、实现步骤0. 资料包1. TLS证书签发2. 使用 certmanager 生成签发证书3. 获取secret的内容 并替换CA_BUNDLE4.部署svc deploy 三、测试验证1. 观察pod情况2. 给node 打上不需要超售的标签【可以让master节点资源不超卖】3. 资源实现超卖4. 删除还… 目录 插叙前言一、思考和原理二、实现步骤0. 资料包1. TLS证书签发2. 使用 certmanager 生成签发证书3. 获取secret的内容 并替换CA_BUNDLE4.部署svc deploy 三、测试验证1. 观察pod情况2. 给node 打上不需要超售的标签【可以让master节点资源不超卖】3. 资源实现超卖4. 删除还原 四、总结 插叙
友友们好久不见插播一个最近get的证书完成了第一步一起努力鸭~
前言
小涛运维时遇到一个问题发现容器在Kubernetes中使用率要远低于申请率 比如申请了1G内存实际只用了200M左右 就会产生这种情况node上还有资源但是不能调度了Why因为k8s默认调度器是 按allocate算的并不是真实剩余的
那么怎么办呢
用scheduler extender写一个调度器 用usage调度pod按照namespace 把业务分开在每个ns上设置resourceQuota –相对最容易实现【yaml文件限制】把pod的request降低基于MutatingWebhook 把node的 allocatable 调高
今天小涛讲解的方法是第四种—-基于MutatingWebhook 把node的 allocatable 调高 下面和小涛看看吧~
一、思考和原理
思想基于MutatingWebhook将allocatable调高实现node资源超卖
#查看某个node节点当前资源情况
kubectl get nodes node2 -o yaml |grep allocatable: -A6核心点动态修改节点Node对象的allocatable字段值 而我们看到allocatable字段属于Status字段显然不能直接通过kubectl edit命令来直接修改。因为Status字段和Spec字段不同Spec是用户设置的期望数据而Status是实际数据Node节点通过不断向apiServer发送心跳来更新自己的实时状态最终存在etcd中。那么怎么去修改Stauts字段呢
二、实现步骤
资料包 链接https://pan.baidu.com/s/12AmYn5h_c_XrlH6iS-gSDQ 提取码sell 实现的核心步骤 证书和签名tls双向认证需要编写go项目代码实现webhook服务器对node status字段更改部署webhook服务编写MutatingWebhookConfiguration 测试【把node 的status推送到中间件服务中】
TLS证书签发 借助certmanager 签发证书 #安装部署 kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.8.2/cert-manager.yaml# #如果是内网环境将yaml文件 wget后再docker pull 对应的镜像后再导入到离线环境的镜像仓库【资料包里有相关镜像资料】 wget https://github.com/cert-manager/cert-manager/releases/download/v1.8.2/cert-manager.yaml docker pull quay.io/jetstack/cert-manager-cainjector:v1.8.2 docker pull quay.io/jetstack/cert-manager-controller:v1.8.2 docker pull quay.io/jetstack/cert-manager-webhook:v1.8.2 docker pull registry.cn-beijing.aliyuncs.com/dbatao/k8s-node-oversell:v1检查certmanager服务是否正常 \( kubectl apply -f cert-manager.yaml \) kubectl get pod -n cert-manager2. 使用 certmanager 生成签发证书
cat cert.yaml
apiVersion: v1 kind: Namespace
metadata:name: node-oversell-webhook
apiVersion: cert-manager.io/v1 kind: Issuer metadata:name: selfsigned-issuernamespace: node-oversell-webhook
spec:selfSigned: {}
apiVersion: cert-manager.io/v1 kind: Certificate metadata:name: serving-certnamespace: node-oversell-webhook spec:dnsNames:- node-oversell-webhook.node-oversell-webhook.svc- node-oversell-webhook.node-oversell-webhook.svc.cluster.localissuerRef:kind: Issuername: selfsigned-issuersecretName: webhook-server-cert —# kubectl apply -f cert.yaml查看证书是否已签发完成 \( kubectl get certificate -n node-oversell-webhook3. 获取secret的内容 并替换CA_BUNDLE CA_BUNDLE\)(kubectl -n node-oversell-webhook get secrets webhook-server-cert -o jsonpath{.data.ca.crt})echo \({CA_BUNDLE} sed -i s|\\){CA_BUNDLE}|${CA_BUNDLE}|g mutating_webhook.yamlcat mutating_webhook.yaml kubectl apply -f mutating_webhook.yaml4.部署svc deploy kubectl apply -f webhook_deployment.yamlkubectl apply -f svc.yaml curl -k https://svc_ip:443/readyz #预期—返回ok三、测试验证
观察pod情况 kubectl logs -n node-oversell-webhook node-oversell-webhook-7b75dd467b-hs9m9 –tail 102. 给node 打上不需要超售的标签【可以让master节点资源不超卖】 #将node_name更换为不用超卖节点的名称非常智能 \( kubectl label node node_name node-oversell/disabletrue#例如 kubectl label node master01 node-oversell/disabletrue#如果需要这个节点超卖将标签去掉即可 kubectl label node master01 node-oversell/disable-3. 资源实现超卖 \) kubectl get nodes node2 -o yaml |grep allocatable: -A6#在Prometheus里用PromeQL也能查看到 kube_node_status_allocatable{} #QL查询语句4. 删除还原 \( kubectl delete deploy -n node-oversell-webhook node-oversell-webhook \) kubectl delete mutatingwebhookconfigurations node-oversell-webhook四、总结 我们再来回顾一下大致步骤 API-Server支持准入控制器中准入控制器中有一个“修改性质的控制器” 监听node status的服务资源牵引到某个服务上【这个服务中把10G改成20G再推送API-Server中】Admission controller是拦截(经过身份验证)API Server请求的网关并且可以修改请求对象或拒绝请求。k8s在Api-Server中就提供Admission Controller准入控制器的机制包括MutatingAdmissionWebhook通过这个webhook所有在集群中和Api-Sever交互的请求都被发送到一个指定的接口中我们只要提供一个这样的接口就可以获取到Node往ApiServer发送心跳的Staus数据了。然后将这个数据进行我们的自定义修改再往后传给etcd就能让etcd以为我们修改过的Status数据就是节点的真实Status最终实现资源的超卖。MutatingAdmissionWebhook 作为kubernetes的 ApiServer中Admission Controller的一部分提供了非常灵活的扩展机制通过配置MutatingWebhookConfiguration对象理论上可以监听并修改任何经过ApiServer处理的请求。 形象的通俗理解古代时大臣node资源汇报想汇报情况给皇帝ETCD需要通过太监进行传达那么太监可以修改奏本allocatable再传给皇帝以达到以假乱真的情形。 而 k8s在Api-Server中就提供Admission Controller准入控制器的机制可以修改性质的控制器
今天也是充实的一天呢有问题欢迎大家评论区交流咱们下篇文章再见了~
- 上一篇: 网站怎么挣钱运营方案包括哪些内容
- 下一篇: 网站怎么自己做优化wordpress 截取文章内容
相关文章
-
网站怎么挣钱运营方案包括哪些内容
网站怎么挣钱运营方案包括哪些内容
- 技术栈
- 2026年03月21日
-
网站怎么在工信部备案信息查询如何做网站授权网址
网站怎么在工信部备案信息查询如何做网站授权网址
- 技术栈
- 2026年03月21日
-
网站怎么在百度搜不到网站栏目列表
网站怎么在百度搜不到网站栏目列表
- 技术栈
- 2026年03月21日
-
网站怎么自己做优化wordpress 截取文章内容
网站怎么自己做优化wordpress 截取文章内容
- 技术栈
- 2026年03月21日
-
网站怎么做 流程图网站开发文档上传服务器
网站怎么做 流程图网站开发文档上传服务器
- 技术栈
- 2026年03月21日
-
网站怎么做 流程图做印刷去哪个网站找工作
网站怎么做 流程图做印刷去哪个网站找工作
- 技术栈
- 2026年03月21日
