作者简介
王海龙,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",
···
],
参考
- RKE
集群参数:http://docs.rancher.cn/docs/rancher2/cluster-provisioning/rke-clusters/options/_index/ - RKE cluster.yml
文件示例:http://docs.rancher.cn/docs/rke/example-yamls/_index/