在Rancher中修改K8S服务参数的万金油法则
作者简介
王海龙,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/
在Rancher中修改K8S服务参数的万金油法则的更多相关文章
- 在 Docker Desktop 中启用 K8s 服务
Overview 作为目前事实上的容器编排系统标准,K8s 无疑是现代应用的基石,很多同学入门可能直接就被卡到第一关,从哪去弄个 K8s 的环境 自己搭吧,要求的硬件资源太高,基本上搭建一个 K8s ...
- java程序利用ansible修改redis服务参数
第一步,java调用shell paraname和paravalue是传给playbook的变量. try { String cmd5 = "sudo ansible-playbook /s ...
- JNI中修改(基本类型)参数并返回到Java层使用
最近在JNI相关项目中遇到一个问题:在Java层传入多个int类型的参数,在jni层修改参数值或地址之后重新返回到Java层.这应该算是基本知识了,尤其是基本类型的参数往往看似简单,所以在之前学习jn ...
- 腾讯云 TKE Everywhere 特性发布,用户可在自有基础设施中托管 K8s 服务
作者 孔令飞,腾讯云资深工程师,拥有大规模 Kubernetes 集群.微服务的研发和架构经验,目前专注于云原生混合云领域的基础架构开发. 朱翔,腾讯云容器服务高级产品经理,目前负责云原生混合云产品方 ...
- docker微服务部署之:六、Rancher管理部署微服务
docker微服务部署之:五.利用DockerMaven插件自动构建镜像 一. 什么是Rancher Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源 ...
- java 修改HttpServletRequest的参数或请求头
场景:过滤器中获取参数Token并添加到请求头(用户认证兼容老系统) 请求头和请求参数是不能直接修改,也没有提供修改的方法,但是可以在过滤器和拦截器中使用HttpServletRequestWrapp ...
- [JavaEE]Get请求URI中带的中文参数在服务端乱码问题的解决方法
在Get请求中,如果请求参数中带有中文,如 http://localhost:8080/DinnerParty/shop/search?query=多伦多, 在服务端拿到的是乱码. 这是因为客户端提交 ...
- [Oracle][Standby][PDB]在PDB中修改参数,设置范围为 SPFILE,报 ORA-65099错误
[Oracle][Standby][PDB]在PDB中修改参数,设置范围为 SPFILE,报 ORA-65099错误 在Data Gaurd 的 Standby (或 CDB 是 Read Only ...
- 微信小程序中如何使用setData修改数组或对象中的某一参数
本人也是刚开始接触微信小程序,在微信小程序中经常会遇到修改数组中某一项的值,比如array[0]或者是对象中object.item的值.这些值在微信小程序中都需要使用一个名为setData的方法,而这 ...
随机推荐
- windows 下安装Charles,破解,安装证书,设置可抓取https包
参考地址: https://www.zzzmode.com/mytools/charles/ 一.下载后进行安装 二.安装后进行破解 按照参考中的链接破解即可 三.Charles在windows证书 ...
- python 数据写入json文件时中文显示Unicode编码问题
一.问题描述 import json dir = { '春晓':'asfffa', '春眠不觉晓' : '处处闻啼鸟', '夜来风雨声' : 56789, 'asdga':'asdasda' } fp ...
- 五、部署LNMP环境(linux + nginx + mysql + php)
装包(nginx.数据库.php.php调用)---------起服务-----权限 装包: yum -y install gcc openssl-devel pcre-devel zlib-de ...
- javascript中的设计模式
什么是设计模式 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. ...
- WebClient (史上最全)
疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 面试必备 + 面试必备 [博客园总入口 ] 疯狂创客圈 经典图书 : <Sprin ...
- iOS-block本质是什么?
一: block的原理是怎样的?本质是什么? block本质上也是一个OC对象,因为它的内部也有个isa指针 block是封装了函数调用以及函数调用环境的OC对象 接下来我们将通过底层源码来论证上诉两 ...
- 流程自动化RPA,Power Automate Desktop系列 - 创建WPF程序安装包及升级包
一.背景 之前写过的几个WPF小工具,每次发布都需要给它打安装包和升级包,涉及到一些系列繁琐的手工操作,有了Power Automate Desktop,于是便寻思着能不能做成一个自动化的流来使用. ...
- js 实时监听滚动条状态 判断滚动条位置
var scrollFunc = function (e) { e = e || window.event; var t = document.documentElement.scrollT ...
- C# 获取电脑Mac地址
private string getMAC() { try { NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterf ...
- SonarQube 概述与安装
SonarQube 概述 是一种自动代码审查工具,用于检测代码中的错误.漏洞和代码异味.它可以与您现有的工作流程集成,以支持跨项目分支和拉取请求的持续代码检查. 在一个典型的开发过程中 开发人员在 I ...