9 - 示例配置


有许多不同的配置选项可以在集群配置文件中为RKE设置。以下是一些示例配置:

Rancher 2用户注意事项 如果在创建Rancher Launched Kubernetes时使用配置文件配置集群选项,则kube_apikube_controller服务名称应仅包含下划线。这仅适用于Rancher v2.0.5和v2.0.6

最小cluster.yml示例

  1. nodes:
  2. - address: 1.2.3.4
  3. user: ubuntu
  4. role:
  5. - controlplane
  6. - etcd
  7. - worker

完整 cluster.yml 示例

当前版本v0.2.2

  1. nodes:
  2. - address: 1.1.1.1
  3. user: ubuntu
  4. role:
  5. - controlplane
  6. - etcd
  7. ssh_key_path: /home/user/.ssh/id_rsa
  8. port: 2222
  9. - address: 2.2.2.2
  10. user: ubuntu
  11. role:
  12. - worker
  13. ssh_key: |-
  14. -----BEGIN RSA PRIVATE KEY-----
  15. -----END RSA PRIVATE KEY-----
  16. - address: example.com
  17. user: ubuntu
  18. role:
  19. - worker
  20. hostname_override: node3
  21. internal_address: 192.168.1.6
  22. labels:
  23. app: ingress
  24. # 如果设置为true,则可以使用不受支持的Docker版本
  25. ignore_docker_version: false
  26. # 集群等级的SSH私钥(private key)
  27. ## 如果节点未配置SSH私钥,RKE将会以此私钥去连接集群节点
  28. ssh_key_path: ~/.ssh/test
  29. # 使用SSH agent来提供SSH私钥
  30. ## 需要配置环境变量`SSH_AUTH_SOCK`指向已添加私钥的SSH agent
  31. ssh_agent_auth: false
  32. # 配置docker root目录
  33. docker_root_dir: "/var/lib/docker"
  34. # 私有仓库
  35. ## 当设置`is_default: true`后,构建集群时会自动在配置的私有仓库中拉取镜像
  36. ## 如果使用的是DockerHub镜像仓库,则可以省略`url`或将其设置为`docker.io`
  37. ## 如果使用内部公开仓库,则可以不用设置用户名和密码
  38. private_registries:
  39. - url: registry.com
  40. user: Username
  41. password: password
  42. is_default: true
  43. # 堡垒机
  44. ## 如果集群节点需要通过堡垒机跳转,那么需要为RKE配置堡垒机信息
  45. bastion_host:
  46. address: x.x.x.x
  47. user: ubuntu
  48. port: 22
  49. ssh_key_path: /home/user/.ssh/bastion_rsa
  50. # or
  51. # ssh_key: |-
  52. # -----BEGIN RSA PRIVATE KEY-----
  53. #
  54. # -----END RSA PRIVATE KEY-----
  55. # 设置Kubernetes集群名称
  56. cluster_name: mycluster
  57. # 定义kubernetes版本.
  58. ## 目前, 版本定义需要与rancher/types defaults map相匹配: https://github.com/rancher/types/blob/master/apis/management.cattle.io/v3/k8s_defaults.go#L14
  59. ## 如果同时定义了kubernetes_version和system_images中的kubernetes镜像,则system_images配置将优先于kubernetes_version
  60. kubernetes_version: v1.13.5-rancher1
  61. # `system_images`优先级更高,如果没有单独指定`system_images`镜像,则会使用`kubernetes_version`对应的默认镜像版本。
  62. ## 默认Tags: https://github.com/rancher/types/blob/master/apis/management.cattle.io/v3/k8s_defaults.go)
  63. system_images:
  64. etcd: rancher/coreos-etcd:v3.2.24-rancher1
  65. alpine: rancher/rke-tools:v0.1.27
  66. nginx_proxy: rancher/rke-tools:v0.1.27
  67. cert_downloader: rancher/rke-tools:v0.1.27
  68. kubernetes_services_sidecar: rancher/rke-tools:v0.1.27
  69. kubedns: rancher/k8s-dns-kube-dns:1.15.0
  70. dnsmasq: rancher/k8s-dns-dnsmasq-nanny:1.15.0
  71. kubedns_sidecar: rancher/k8s-dns-sidecar:1.15.0
  72. kubedns_autoscaler: rancher/cluster-proportional-autoscaler:1.0.0
  73. coredns: coredns/coredns:1.2.6
  74. coredns_autoscaler: rancher/cluster-proportional-autoscaler:1.0.0
  75. kubernetes: rancher/hyperkube:v1.13.5-rancher1
  76. flannel: rancher/coreos-flannel:v0.10.0-rancher1
  77. flannel_cni: rancher/flannel-cni:v0.3.0-rancher1
  78. calico_node: rancher/calico-node:v3.4.0
  79. calico_cni: rancher/calico-cni:v3.4.0
  80. calico_controllers: ""
  81. calico_ctl: rancher/calico-ctl:v2.0.0
  82. canal_node: rancher/calico-node:v3.4.0
  83. canal_cni: rancher/calico-cni:v3.4.0
  84. canal_flannel: rancher/coreos-flannel:v0.10.0
  85. weave_node: weaveworks/weave-kube:2.5.0
  86. weave_cni: weaveworks/weave-npc:2.5.0
  87. pod_infra_container: rancher/pause:3.1
  88. ingress: rancher/nginx-ingress-controller:0.21.0-rancher3
  89. ingress_backend: rancher/nginx-ingress-controller-defaultbackend:1.4-rancher1
  90. metrics_server: rancher/metrics-server:v0.3.1
  91. services:
  92. etcd:
  93. # if external etcd is used
  94. # path: /etcdcluster
  95. # external_urls:
  96. # - https://etcd-example.com:2379
  97. # ca_cert: |-
  98. # -----BEGIN CERTIFICATE-----
  99. # xxxxxxxxxx
  100. # -----END CERTIFICATE-----
  101. # cert: |-
  102. # -----BEGIN CERTIFICATE-----
  103. # xxxxxxxxxx
  104. # -----END CERTIFICATE-----
  105. # key: |-
  106. # -----BEGIN PRIVATE KEY-----
  107. # xxxxxxxxxx
  108. # -----END PRIVATE KEY-----
  109. # Rancher 2用户注意事项:如果在创建Rancher Launched Kubernetes时使用配置文件配置集群,则`kube_api`服务名称应仅包含下划线。这仅适用于Rancher v2.0.5和v2.0.6。
  110. # 以下参数仅支持RKE部署的etcd集群
  111. # 开启自动备份
  112. ## rke版本大于等于0.2.x或rancher版本大于等于2.2.0时使用
  113. backup_config:
  114. enabled: true
  115. interval_hours: 12
  116. retention: 6
  117. ## rke版本小于0.2.x或rancher版本小于2.2.0时使用
  118. snapshot: true
  119. creation: 5m0s
  120. retention: 24h
  121. # 扩展参数
  122. extra_args:
  123. # 修改空间配额为$((4*1024*1024*1024)),默认2G,最大8G
  124. quota-backend-bytes: '4294967296'
  125. kube-api:
  126. # cluster_ip范围
  127. ## 这必须与kube-controller中的service_cluster_ip_range匹配
  128. service_cluster_ip_range: 10.43.0.0/16
  129. # NodePort映射的端口范围
  130. service_node_port_range: 30000-32767
  131. # Pod安全策略
  132. pod_security_policy: false
  133. # kubernetes API server扩展参数
  134. ## 这些参数将会替换默认值
  135. extra_args:
  136. # 启用审计日志到标准输出
  137. audit-log-path: "-"
  138. # 增加删除workers的数量
  139. delete-collection-workers: 3
  140. # 将日志输出的级别设置为debug模式
  141. v: 4
  142. # Rancher 2用户注意事项:如果在创建Rancher Launched Kubernetes时使用配置文件配置集群,则`kube_controller`服务名称应仅包含下划线。这仅适用于Rancher v2.0.5和v2.0.6。
  143. kube-controller:
  144. # Pods_ip范围
  145. cluster_cidr: 10.42.0.0/16
  146. # cluster_ip范围
  147. ## 这必须与kube-api中的service_cluster_ip_range相同
  148. service_cluster_ip_range: 10.43.0.0/16
  149. extra_args:
  150. ## 控制器定时与节点通信以检查通信是否正常,周期默认5s
  151. node-monitor-period: '5s'
  152. ## 当节点通信失败后,再等一段时间kubernetes判定节点为notready状态。
  153. ## 这个时间段必须是kubelet的nodeStatusUpdateFrequency(默认10s)的N倍,
  154. ## 其中N表示允许kubelet同步节点状态的重试次数,默认40s。
  155. node-monitor-grace-period: '20s'
  156. ## 再持续通信失败一段时间后,kubernetes判定节点为unhealthy状态,默认1m0s。
  157. node-startup-grace-period: '30s'
  158. ## 再持续失联一段时间,kubernetes开始迁移失联节点的Pod,默认5m0s。
  159. pod-eviction-timeout: '1m'
  160. kubelet:
  161. # 集群搜索域
  162. cluster_domain: cluster.local
  163. # 内部DNS服务器地址
  164. cluster_dns_server: 10.43.0.10
  165. # 禁用swap
  166. fail_swap_on: false
  167. # 扩展变量
  168. extra_args:
  169. ## 修改节点最大Pod数量
  170. max-pods: "250"
  171. ## 密文和配置映射同步时间,默认1分钟
  172. sync-frequency: '3s'
  173. ## Kubelet进程可以打开的文件数(默认1000000),根据节点配置情况调整
  174. max-open-files: '2000000'
  175. ## 与apiserver会话时的并发数,默认是10
  176. kube-api-burst: '30'
  177. ## 与apiserver会话时的 QPS,默认是5
  178. kube-api-qps: '15'
  179. ## kubelet默认一次拉取一个镜像,设置为false可以同时拉取多个镜像,
  180. ## 前提是存储驱动要为overlay2,对应的Dokcer也需要增加下载并发数
  181. serialize-image-pulls: 'false'
  182. ## 拉取镜像的最大并发数,registry-burst不能超过registry-qps ,
  183. ## 仅当registry-qps大于0(零)时生效,(默认10)。如果registry-qps为0则不限制(默认5)。
  184. registry-burst: '10'
  185. registry-qps: '0'
  186. # 节点资源预留
  187. system-reserved: 'memory=250Mi'
  188. kube-reserved: 'memory=250Mi'
  189. eviction-hard: 'memory.available<300Mi,nodefs.available<10%,imagefs.available<15%,nodefs.inodesFree<5%'
  190. # 可以选择定义额外的卷绑定到服务
  191. extra_binds:
  192. - "/usr/libexec/kubernetes/kubelet-plugins:/usr/libexec/kubernetes/kubelet-plugins"
  193. # 目前,只支持x509验证
  194. ## 您可以选择创建额外的SAN(主机名或IP)以添加到API服务器PKI证书。
  195. ## 如果要为control plane servers使用负载均衡器,这很有用。
  196. authentication:
  197. strategy: "x509|webhook"
  198. webhook:
  199. config_file: "...."
  200. cache_timeout: 5s
  201. sans:
  202. # 此处配置备用域名或IP,当主域名或者IP无法访问时,可通过备用域名或IP访问
  203. - "192.168.1.100"
  204. - "www.test.com"
  205. # Kubernetes认证模式
  206. ## Use `mode: rbac` 启用 RBAC
  207. ## Use `mode: none` 禁用 认证
  208. authorization:
  209. mode: rbac
  210. # 如果要设置Kubernetes云提供商,需要指定名称和配置
  211. cloud_provider:
  212. name: aws
  213. # Add-ons是通过kubernetes jobs来部署。 在超时后,RKE将放弃重试获取job状态。以秒为单位。
  214. addon_job_timeout: 30
  215. # 有几个网络插件可以选择:`flannel、canal、calico`,Rancher2默认canal
  216. network:
  217. plugin: canal
  218. options:
  219. flannel_backend_type: "vxlan"
  220. # 目前只支持nginx ingress controller
  221. ## 可以设置`provider: none`来禁用ingress controller
  222. ingress:
  223. provider: nginx
  224. node_selector:
  225. app: ingress
  226. # 配置dns上游dns服务器
  227. ## 可用rke版本 v0.2.0
  228. dns:
  229. provider: kube-dns
  230. upstreamnameservers:
  231. - 114.114.114.114
  232. - 1.2.4.8
  233. # 安装附加应用
  234. ## 所有附加应用都必须指定命名空间
  235. addons: |-
  236. ---
  237. apiVersion: v1
  238. kind: Pod
  239. metadata:
  240. name: my-nginx
  241. namespace: default
  242. spec:
  243. containers:
  244. - name: my-nginx
  245. image: nginx
  246. ports:
  247. - containerPort: 80
  248. addons_include:
  249. - https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/rook-operator.yaml
  250. - https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/rook-cluster.yaml
  251. - /path/to/manifest