作者简介

王海龙,Rancher中国社区技术经理,负责Rancher中国技术社区的维护和运营。拥有7年的云计算领域经验,经历了OpenStack到Kubernetes的技术变革,无论底层操作系统Linux,还是虚拟化KVM或是Docker容器技术都有丰富的运维和实践经验。

前言

最近,总能在社区里收到关于如何修改 kube-api、kubelet 等参数的问题,针对如何在 Rancher 中修改 Kubernetes 服务参数(kube-apiserver、kube-controller-manager、kubelet、kube-scheduler 、kube-proxy、etcd),个别同学可能还不是特别熟悉,所以专门写一篇文章给大家介绍如何在 Rancher 中修改自定义集群的 Kubernetes 各个服务的参数。

如何在 Rancher 中修改 Kubernetes 服务的参数

Rancher 创建的自定义集群,其实就是通过 RKE 部署 Kubernetes 集群,所以无论是通过 Rancher UI 去创建的自定义集群,还是通过 RKE 去启动的 Kubernetes 集群,都可以参考cluster.yml 文件示例去设置对应的参数。cluster.yml 文件示例中内置了一些常用的 Kubernetes 服务配置项,例如 NodePort 端口范围、Service IP CIDR 等,如果要修改这类参数,我们只需要修改参数对应的值即可:

kube-api:
# IP range for any services created on Kubernetes
# This must match the service_cluster_ip_range in kube-controller
service_cluster_ip_range: 10.43.0.0/16
# Expose a different port range for NodePort services
service_node_port_range: 30000-32767
...
...

如果内置的参数选项不包含你要修改的 Kubernetes 服务参数,我们可以在每个 Kubernetes 服务的extra_args:下面添加对应的 Kubernetes 参数选项,例如修改 kube-apiserver 的 NodePort 范围和启用 RemoveSelfLink:

kube-api:

extra_args:

# extra_args 中的参数优先级高于rke默认的参数优先级,所以"service-node-port-range"会覆盖掉上层的"service_node_port_range"参数的值

service-node-port-range: 40000-42767

feature-gates: 'RemoveSelfLink=false'

那么,如何在 Rancher 中修改自定义集群的 Kubernetes 服务参数呢,我们可以在 Rancher UI 上选中集群,点击右侧竖起来的 ...,然后点击Edit,进入到编辑集群页面:

然后,点击Edit as YAML:

接下来,我们就可以在 rancher_kubernetes_engine_config.services 中修改各个 Kubernetes 服务的配置参数:

最后,点击Save,保存修改的参数配置。如果配置格式正确,Rancher 会自动更新下游 Kubernetes 集群。

在 Rancher 中修改 Kubernetes 服务参数的原则

所有的 kubernetes 服务的修改层级都是在 rancher_kubernetes_engine_config.services 下,例如:

kube-apiserver的参数层级:

rancher_kubernetes_engine_config:
services:
kube-api: {}

kube-controller-manager的参数层级:

rancher_kubernetes_engine_config:
services:
kube-controller: {}

YAML 中默认的参数名称是通过-分隔,而 Kubernetes 服务的参数是使用_分隔,例如:

通过 YAML 编辑集群时,默认的参数命名规则:

service-node-port-range: 40000-42767

Kubernetes 服务 api 的参数的命名规则:

service_node_port_range: 30000-32767

可以在extra_args:中添加额外的 Kubernetes 服务参数,但需要移除每个参数前面的--,例如 kube-apiserver中对应的启用SelfLink的参数为--feature-gates=RemoveSelfLink=false,而在 Rancher YAML 中添加的参数格式应该为:

rancher_kubernetes_engine_config:
services:
kube-api:
extra_args:
feature-gates: 'RemoveSelfLink=false'

extra_args 中的参数优先级高于 RKE 默认的参数优先级,所以 service-node-port-range 会覆盖掉上层的 service_node_port_range 参数的值。

rancher_kubernetes_engine_config:
services:
kube-api:
service_node_port_range: 30000-32767
extra_args:
# extra_args 中的参数优先级高于rke默认的参数优先级,所以"service-node-port-range"会覆盖掉上层的"service_node_port_range"参数的值
service-node-port-range: 40000-42767

如何确认参数是否生效

参数修改后,如果可以成功保存并更新集群,代表你的参数格式是正确的。那么,如何确认修改的参数已经生效了呢?我们可以登录到对应节点,然后通过 docker inspect 查看对应 Kubernetes 服务的Args:

# docker inspect kube-apiserver
···
"Args": [
···
"--service-node-port-range=40000-42767",
"--feature-gates=RemoveSelfLink=false",
···
],

参考

最新文章

  1. sql 脚本编写之路 常用语句(一)
  2. PHP开发网站之微信登录、绑定
  3. 传引用 C(转)
  4. npm配置代理
  5. js中日历的代码
  6. QTimerLine类学习
  7. cf Ping-Pong (Easy Version)
  8. display:table-cell的惊天作用,直接惊呆你!
  9. 专注手机端前端界面开发的ui组件和js组合
  10. JavaWeb从0开始学(一)-----搭建第一个Web应用程序与JSP工作原理
  11. bower基本使用
  12. Fizz Buzz 面试题
  13. Perl中的自增、自减
  14. 容器互联(linking)
  15. 全景3d
  16. 学习笔记4-pathon的range()函数和list()函数
  17. 错误为Lc.exe已退出,代码为-1
  18. css 解决图片下小空隙问题
  19. Python 各种测试框架简介(三):nose
  20. 『PyTorch』第三弹重置_Variable对象

热门文章

  1. 【渗透实战】那些奇葩的WAF_第二期_无意发现通杀漏洞,空字节突破上传!
  2. WordPress安装篇(4):YUM方式安装LNMP并部署WordPress
  3. Servlet--核心内容汇总
  4. [Azure DevOps] 编译时自动修改版本号
  5. 【Azure Redis 缓存】由Azure Redis是否可以自定义密码而引申出Azure PaaS的Redis服务是否可以和自建的Redis进行主从配置呢?
  6. MySQL 架构|给你一个“上帝视角”
  7. 24、mysql数据库优化
  8. 14、mysql主从复制实战
  9. AcWing 1277. 维护序列
  10. Java核心基础第1篇-走进Java世界