HPA(水平伸缩)和PodDisruptionBudget(干扰预算)
HPA我们可以实现通过手工执行kubectl scale命令实现Pod扩容或缩容,但是这显然不符合Kubernetes的定位目标–自动化、智能化。 Kubernetes期望可以实现通过监测Pod的使用情况,实现pod数量的自动调整,于是就产生了Horizontal Pod Autoscaler(HPA)这种控制器。 HPA可以获取每个Pod利用率,然后和HPA中定义的指标进行对比,同时计算出需要伸缩的具体值,最后实现Pod的数量的调整。其实HPA与之前的Deployment一样,也属于一种Kubernetes资源对象,它通过追踪分析RC控制的所有目标Pod的负载变化情况,来确定是否需要针对性地调整目标Pod的副本数,这是HPA的实现原理 注: 在 K8S 1.18之前,HPA 扩容是无法调整灵敏度的 对于缩容,由 kube-controller-manager 的 --horizontal-pod-autoscaler-downscale-stabilization-window 参数控制缩容时间窗口,默认 5 分钟,即负载减小后至少需要等 5 分钟才会缩容。 对于扩容,由 ...
VPA和CA
VPAKubernetes VPA(Vertical Pod Autoscaler)可以理解为对单个服务资源进行扩容,如CPU、内存之类。它一般应用于一些中心化的单体应用,且无法对其进行部 署多份副本的场景,如 Prometheus 或 Jenkins 这类垂直 Pod 应用自动扩缩容。 VPA 会基于 Pod 的 资源使用情况自动为集群设置资源占用的限制,从而让集群将 Pod 调度到有足够资源的最佳节点上。VPA 也会保持最初容器定义中资源 request 和 limit 的占比。 当控制器检测到一个Pod负载过高时,这时会对当前Pod进行终止,接着对Pod的CPU或内存进行扩容,最后重建Pod,此时Pod可能在任何一个节点进行重建。 它与HPA的扩容机制是完全不一样的,VPA扩容过程中将无法正常提供服务,也因此它使用的场景相比HPA来说,要少的多。 安装vpa1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859...
k8s中遇到的错误总结
cannot create resource ERROR: Job failed (system failure): pods is forbidden: User “system:serviceaccount:dev:default” cannot create resource “pods” in API group “” in the namespace “xxx” 权限不够, 可能后面还会跟个clusterrole at scope..., 需要创建一个clusterrolebindind进行授权 上面例子中, system:serviceaccount是什么类型的对象, dev是namespace, default是用户, 而API group是核心组 http error: ResponseCode: 503 loading OpenAPI spec for "v1beta1.metrics.k8s.io" failed with: failed to retrieve openAPI spec, http error: ResponseCode...
rancher的角色权限分配实践
rancher分为3种角色, 各自适用范围也不同 全局 集群 项目 项目下又包括了多个namespace 先使用管理员登陆创建1个可以管理全局的账户和角色的用户(全局管理员账户) 注: 此用户仅用来管理用户和角色, admin权限太大, 之后不再使用它进行登陆用户名: UserManager拥有角色:Manage RolesManage Users 退出管理员, 然后使用全局管理员账户创建一个集群管理员账户(集群管理员账户)全局权限: Standard User 用户名: ClusterManager 用ClusterManager身份登陆并进行创建集群.略 创建集群或项目时,Rancher 会自动将创建者分配为所有者。分配了所有者角色的用户可以在集群或项目中给其他用户分配角色。 然后使用UserManager为各集群(一个ClusterManager账户下可以创建多个集群, 例如release/production)创建用户 项目管理员ProjectsAdmin 全局权限: Standard User 创建和管理项目, 查看监控等, 可以经由下一级通知...
Artitalk整合hexo进行使用
官网: https://artitalk.js.org/ 建议使用国际版的 LeanCloud 因为国际版的 LeanCloud 不需要配置 serverurl,所以推荐使用国际版,速度没有区别,如果使用国内版的 LeanCloud 别忘了填写 serverurl 即可 目前国际版在国内已ban,可能会出现返回500的问题,可以使用国内版,需要在leancloud左侧菜单 -> 域名绑定按要求正常配置api域名【必须为备案后的子域名】,如下 这里只支持子域名,就是备案的域名额外解析一个带前缀的域名,例如域名是abcd.com,子域名就可以是ziyuming.abcd.com,而且可以解析多个子域名 绑定之后到DNS解析处添加CNAME记录,等几分钟这里就会显示已绑定,这样就算绑定成功了 👀 与valine在同一页面使用 如果有这个需要,可以将 artitalk 与 valine 存放在同一个应用中。可以有效避免同一个页面使用两个leancloud应用所产生的冲突。 安装npm i hexo-butterfly-artitalk --save 前往 ...
kibana用法
Kibana查询语法 要搜索一个确切的字符串,即精确搜索,需要使用双引号引起来:path:”/app/logs/nginx/access.log” 如果不带引号,将会匹配每个单词:uid token 模糊搜索:path:”/app/~” * 匹配0到多个字符:*oken ? 匹配单个字符 : tok?n 匹配是否包含的条件: +:搜索结果中必须包含此项; -:不能含有此项 什么都没有则可有可无: +token -appVersion appCode 运算符AND/OR/NOT必须大写:token AND uid ;token OR uid;NOT uid 允许一个字段值在某个区间([] 包含该值,{}不包含):@version:[1 TO 3] 组合查询:(uid OR token) AND version 转义特殊字符 + – && || ! ( ) { } [ ] ^ ” ~ * ? : \ :转义特殊字符只需在字符前加上符号\ 查询样例简单查询简单查询就是 关键字匹配、字符串包含等,比如说如下语句会找出 na...
整理wsl2配合开发的一些配置
推荐使用idea自带的wsl remote,而非手动配置 IDEA使用WSL作为默认的TerminalFile -> Settings -> Tools -> Terminal -> Shell path在Shell path处填: 1"cmd.exe" /k "wsl.exe" 如图 设置之后的效果 IDEA将node切换为WSL中的node安装nvm/node 参考站内nvm的安装 File -> Settings -> Languages & Frameworks -> Node.js 如图 在下拉列表中选择ubuntu IDEA使用wsl中的gitSetting -> Version Control -> Git 路径配置为 \\wsl$\Ubuntu-20.04\usr\bin\git 代理12345git config --global http.proxy $http_proxygit config --global...
git命令(长期)
git回滚上一个版本/回滚到上个版本123456789linux:git reset --hard HEAD^windows:git reset --hard HEAD"^"git reset --hard HEAD~<n>然后执行git push --force <origin master(可选)> (强制推送分支) 回滚到指定版本1234git reset --hard <hashid>然后执行git push --force <origin master(可选)> (强制推送分支) git commit之后,想撤销commit123git reset --soft HEAD^:撤销上一个commitgit reset --soft HEAD~2:撤销前两个commitgit commit --amend:修改注释 强制提交1git push -u origin 分支 -f git强制更新并覆盖本地修改123git reset --hard origin/develop //使用指定分支...
记录centos7内核版本升级过程(3.10 -> 5.4)
关于 Linux 内核Linux 内核分两种:官方内核(通常是内核开发人员用)和各大 Linux 发行版内核(一般用户常用)。 官方内核版本说明在使用 Docker 时,发现其对 Linux 内核版本的最低要求是 3.10(这也刚好是 CentOS 7.2 的内核版本),但是在这个版本上有部分功能无法实现。为了使用最新版本的内核,只好在安装 CentOS 7 后对内核进行升级。 当然,内核也不能选最新的,防止有尚未发现的 BUG。而且为了减少以后停止维护带来的麻烦,最好安装长期支持版本。各个版本的支持时间在 这个页面 查看。每个版本可能有四种类型,概述如下: Prepatch:Prepatch 或 “RC” 内核是主要的内核预发行版本,主要针对内核开发人员和 Linux 爱好者。必须从源代码进行编译,并且通常包含必须在可以放入稳定版本之前进行测试的新功能。Prepatch 内核由 Linus Torvalds 维护和发布。 Mainline:Mainline 主线树由 Linus Torvalds 维护。这个版本的内核会引入所有新功能。新的 Mainline 内核每 2-3 个...
记录windows11+wsl2环境搭配
点击创建win11安装,以使用usb方式制作启动盘 下载之后进行安装及配置启动盘(下一步下一步即可)WSL启用Window子系统及虚拟化 虚拟机平台只是hyper-v的部分功能,为了使用wsl2下的图形界面可视化,需要开启全部功能的hyper-v 打开 控制面版 访问 程序和功能 子菜单 打开或关闭Windows功能 选择适用于Linux的Windows子系统、 虚拟机平台与Hyper-V 点击确定 重启 升级wsl 以解决:Windows11 WSL 打开Ubuntu 报错 WslRegisterDistribution failed with error: 0x800701bc 下载 适用于 x64 计算机的 WSL2 Linux 内核更新包:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi 然后安装升级包 配置wsl2为默认1wsl --set-default-version 2 wsl更新 使用指令:wsl --update 如果上述指令会很慢,可以在git...
