作者简介

王海龙,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",
···
],

参考

在Rancher中修改K8S服务参数的万金油法则的更多相关文章

  1. 在 Docker Desktop 中启用 K8s 服务

    Overview 作为目前事实上的容器编排系统标准,K8s 无疑是现代应用的基石,很多同学入门可能直接就被卡到第一关,从哪去弄个 K8s 的环境 自己搭吧,要求的硬件资源太高,基本上搭建一个 K8s ...

  2. java程序利用ansible修改redis服务参数

    第一步,java调用shell paraname和paravalue是传给playbook的变量. try { String cmd5 = "sudo ansible-playbook /s ...

  3. JNI中修改(基本类型)参数并返回到Java层使用

    最近在JNI相关项目中遇到一个问题:在Java层传入多个int类型的参数,在jni层修改参数值或地址之后重新返回到Java层.这应该算是基本知识了,尤其是基本类型的参数往往看似简单,所以在之前学习jn ...

  4. 腾讯云 TKE Everywhere 特性发布,用户可在自有基础设施中托管 K8s 服务

    作者 孔令飞,腾讯云资深工程师,拥有大规模 Kubernetes 集群.微服务的研发和架构经验,目前专注于云原生混合云领域的基础架构开发. 朱翔,腾讯云容器服务高级产品经理,目前负责云原生混合云产品方 ...

  5. docker微服务部署之:六、Rancher管理部署微服务

    docker微服务部署之:五.利用DockerMaven插件自动构建镜像 一. 什么是Rancher Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源 ...

  6. java 修改HttpServletRequest的参数或请求头

    场景:过滤器中获取参数Token并添加到请求头(用户认证兼容老系统) 请求头和请求参数是不能直接修改,也没有提供修改的方法,但是可以在过滤器和拦截器中使用HttpServletRequestWrapp ...

  7. [JavaEE]Get请求URI中带的中文参数在服务端乱码问题的解决方法

    在Get请求中,如果请求参数中带有中文,如 http://localhost:8080/DinnerParty/shop/search?query=多伦多, 在服务端拿到的是乱码. 这是因为客户端提交 ...

  8. [Oracle][Standby][PDB]在PDB中修改参数,设置范围为 SPFILE,报 ORA-65099错误

    [Oracle][Standby][PDB]在PDB中修改参数,设置范围为 SPFILE,报 ORA-65099错误 在Data Gaurd 的 Standby (或 CDB 是 Read Only ...

  9. 微信小程序中如何使用setData修改数组或对象中的某一参数

    本人也是刚开始接触微信小程序,在微信小程序中经常会遇到修改数组中某一项的值,比如array[0]或者是对象中object.item的值.这些值在微信小程序中都需要使用一个名为setData的方法,而这 ...

随机推荐

  1. 使用JS获取两个时间差(JS写一个倒计时功能)

    <body onload="myFunction()"> <p id="demo"></p> <script> ...

  2. PTA题目集7-9总结

    PTA题目集7-9总结 一.前言 题目集七:该题集为轮到图形卡片排序游戏题,主要考查的知识点有类的继承,ArrayList泛型的使用,Compabale接口的运用,多态的使用方法以及接口的应用,难度较 ...

  3. SpringCloud-OAuth2(三):进阶篇

    上篇文章讲了SpringCloud OAuth 的实战篇,但是在微服务环境下,常常会有一个认证中心. 而普通服务接收到请求后,判断token是否有效并不是自己处理的,因为token的管理统一交给认证中 ...

  4. WEB安全漏洞扫描与处理(上)——安全漏洞扫描工具AppScan的安装使用

    很多公司对软件会有安全的要求,一般测试公司会使用安全漏洞扫描工具对软件进行漏扫,然后给出安全报告,然后软件开发人员会根据提供的安全报告进行漏洞的处理.我们接触到的测评公司,使用的是漏洞扫描工具AppS ...

  5. JUnit5注解学习指引

    注解(Annotations)是JUnit的标志性技术,本文就来对它的20个注解,以及元注解和组合注解进行学习. 20个注解 在org.junit.jupiter.api包中定义了这些注解,它们分别是 ...

  6. vscode 配置 Pug Compile Hero Pro 插件步骤

    这个随笔主要介绍 vscode 配置 Pug Compile Hero Pro 插件的步骤,实现快速使用less 以及 scss 等的编程语言 第一步 当然是安装我们的插件啦! 在插件商店里 搜 Sa ...

  7. Vue前端基础学习

    vue-cli vue-cli 官方提供的一个脚手架(预先定义好的目录结构及基础代码,咱们在创建Maven项目的时可以选择创建一个骨架项目,这个骨架项目就是脚手架),用于快速生成一个vue项目模板 主 ...

  8. 乘风破浪,Windows11官方原装4K壁纸,前卫的艺术数字设计

    Windows11预览版官方壁纸 默认主题Windows Windows.zip 月轮主题ThemeA ThemeA.zip 艺术石主题ThemeB ThemeB.zip 日升主题ThemeC The ...

  9. 腾讯云TKE-基于 Cilium 统一混合云容器网络(下)

    前言 在 腾讯云TKE - 基于 Cilium 统一混合云容器网络(上) 中,我们介绍 TKE 混合云的跨平面网络互通方案和 TKE 混合云 Overlay 网络方案.公有云 TKE 集群添加第三方 ...

  10. Gym 100169E Tetrahedron Inequality

    大致题意: 给出六条边,判断是否能组成四面体 分析: 四面体由四个三角形组成,所以每一条边肯定要符合三角形的任意两边大于第三边的性质.一开始以为这样判断就可以了,然而这题并没有这么简单. 如右图,有四 ...