9 - 示例配置


    完整 cluster.yml 示例

    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. flannel: rancher/coreos-flannel:v0.10.0-rancher1
    76. calico_node: rancher/calico-node:v3.4.0
    77. calico_cni: rancher/calico-cni:v3.4.0
    78. calico_controllers: ""
    79. calico_ctl: rancher/calico-ctl:v2.0.0
    80. canal_node: rancher/calico-node:v3.4.0
    81. canal_cni: rancher/calico-cni:v3.4.0
    82. canal_flannel: rancher/coreos-flannel:v0.10.0
    83. weave_node: weaveworks/weave-kube:2.5.0
    84. weave_cni: weaveworks/weave-npc:2.5.0
    85. pod_infra_container: rancher/pause:3.1
    86. ingress: rancher/nginx-ingress-controller:0.21.0-rancher3
    87. ingress_backend: rancher/nginx-ingress-controller-defaultbackend:1.4-rancher1
    88. metrics_server: rancher/metrics-server:v0.3.1
    89. services:
    90. etcd:
    91. # if external etcd is used
    92. # path: /etcdcluster
    93. # external_urls:
    94. # - https://etcd-example.com:2379
    95. # ca_cert: |-
    96. # -----BEGIN CERTIFICATE-----
    97. # xxxxxxxxxx
    98. # -----END CERTIFICATE-----
    99. # cert: |-
    100. # -----BEGIN CERTIFICATE-----
    101. # xxxxxxxxxx
    102. # -----END CERTIFICATE-----
    103. # key: |-
    104. # -----BEGIN PRIVATE KEY-----
    105. # xxxxxxxxxx
    106. # -----END PRIVATE KEY-----
    107. # Rancher 2用户注意事项:如果在创建Rancher Launched Kubernetes时使用配置文件配置集群,则`kube_api`服务名称应仅包含下划线。这仅适用于Rancher v2.0.5和v2.0.6。
    108. # 以下参数仅支持RKE部署的etcd集群
    109. # 开启自动备份
    110. ## rke版本大于等于0.2.x或rancher版本大于等于2.2.0时使用
    111. backup_config:
    112. enabled: true
    113. interval_hours: 12
    114. retention: 6
    115. ## rke版本小于0.2.x或rancher版本小于2.2.0时使用
    116. snapshot: true
    117. creation: 5m0s
    118. retention: 24h
    119. # 扩展参数
    120. extra_args:
    121. # 修改空间配额为$((4*1024*1024*1024)),默认2G,最大8G
    122. quota-backend-bytes: '4294967296'
    123. kube-api:
    124. # cluster_ip范围
    125. ## 这必须与kube-controller中的service_cluster_ip_range匹配
    126. service_cluster_ip_range: 10.43.0.0/16
    127. # NodePort映射的端口范围
    128. service_node_port_range: 30000-32767
    129. # Pod安全策略
    130. pod_security_policy: false
    131. # kubernetes API server扩展参数
    132. ## 这些参数将会替换默认值
    133. extra_args:
    134. # 启用审计日志到标准输出
    135. audit-log-path: "-"
    136. # 增加删除workers的数量
    137. delete-collection-workers: 3
    138. # 将日志输出的级别设置为debug模式
    139. v: 4
    140. # Rancher 2用户注意事项:如果在创建Rancher Launched Kubernetes时使用配置文件配置集群,则`kube_controller`服务名称应仅包含下划线。这仅适用于Rancher v2.0.5和v2.0.6。
    141. kube-controller:
    142. # Pods_ip范围
    143. cluster_cidr: 10.42.0.0/16
    144. # cluster_ip范围
    145. ## 这必须与kube-api中的service_cluster_ip_range相同
    146. service_cluster_ip_range: 10.43.0.0/16
    147. extra_args:
    148. ## 控制器定时与节点通信以检查通信是否正常,周期默认5s
    149. node-monitor-period: '5s'
    150. ## 当节点通信失败后,再等一段时间kubernetes判定节点为notready状态。
    151. ## 这个时间段必须是kubelet的nodeStatusUpdateFrequency(默认10s)的N倍,
    152. ## 其中N表示允许kubelet同步节点状态的重试次数,默认40s。
    153. node-monitor-grace-period: '20s'
    154. ## 再持续通信失败一段时间后,kubernetes判定节点为unhealthy状态,默认1m0s。
    155. node-startup-grace-period: '30s'
    156. ## 再持续失联一段时间,kubernetes开始迁移失联节点的Pod,默认5m0s。
    157. pod-eviction-timeout: '1m'
    158. kubelet:
    159. # 集群搜索域
    160. # 内部DNS服务器地址
    161. # 禁用swap
    162. fail_swap_on: false
    163. # 扩展变量
    164. extra_args:
    165. ## 修改节点最大Pod数量
    166. max-pods: "250"
    167. ## 密文和配置映射同步时间,默认1分钟
    168. sync-frequency: '3s'
    169. ## Kubelet进程可以打开的文件数(默认1000000),根据节点配置情况调整
    170. max-open-files: '2000000'
    171. ## 与apiserver会话时的并发数,默认是10
    172. kube-api-burst: '30'
    173. ## 与apiserver会话时的 QPS,默认是5
    174. kube-api-qps: '15'
    175. ## kubelet默认一次拉取一个镜像,设置为false可以同时拉取多个镜像,
    176. ## 前提是存储驱动要为overlay2,对应的Dokcer也需要增加下载并发数
    177. serialize-image-pulls: 'false'
    178. ## 拉取镜像的最大并发数,registry-burst不能超过registry-qps ,
    179. ## 仅当registry-qps大于0(零)时生效,(默认10)。如果registry-qps为0则不限制(默认5)。
    180. registry-burst: '10'
    181. registry-qps: '0'
    182. # 节点资源预留
    183. system-reserved: 'memory=250Mi'
    184. kube-reserved: 'memory=250Mi'
    185. eviction-hard: 'memory.available<300Mi,nodefs.available<10%,imagefs.available<15%,nodefs.inodesFree<5%'
    186. # 可以选择定义额外的卷绑定到服务
    187. extra_binds:
    188. - "/usr/libexec/kubernetes/kubelet-plugins:/usr/libexec/kubernetes/kubelet-plugins"
    189. # 目前,只支持x509验证
    190. ## 您可以选择创建额外的SAN(主机名或IP)以添加到API服务器PKI证书。
    191. ## 如果要为control plane servers使用负载均衡器,这很有用。
    192. authentication:
    193. strategy: "x509|webhook"
    194. webhook:
    195. config_file: "...."
    196. cache_timeout: 5s
    197. sans:
    198. # 此处配置备用域名或IP,当主域名或者IP无法访问时,可通过备用域名或IP访问
    199. - "192.168.1.100"
    200. - "www.test.com"
    201. # Kubernetes认证模式
    202. ## Use `mode: rbac` 启用 RBAC
    203. ## Use `mode: none` 禁用 认证
    204. authorization:
    205. mode: rbac
    206. # 如果要设置Kubernetes云提供商,需要指定名称和配置
    207. cloud_provider:
    208. name: aws
    209. # Add-ons是通过kubernetes jobs来部署。 在超时后,RKE将放弃重试获取job状态。以秒为单位。
    210. addon_job_timeout: 30
    211. # 有几个网络插件可以选择:`flannel、canal、calico`,Rancher2默认canal
    212. network:
    213. plugin: canal
    214. options:
    215. flannel_backend_type: "vxlan"
    216. # 目前只支持nginx ingress controller
    217. ## 可以设置`provider: none`来禁用ingress controller
    218. ingress:
    219. provider: nginx
    220. node_selector:
    221. app: ingress
    222. # 配置dns上游dns服务器
    223. ## 可用rke版本 v0.2.0
    224. dns:
    225. provider: kube-dns
    226. upstreamnameservers:
    227. - 114.114.114.114
    228. - 1.2.4.8
    229. # 安装附加应用
    230. ## 所有附加应用都必须指定命名空间
    231. addons: |-
    232. ---
    233. apiVersion: v1
    234. kind: Pod
    235. metadata:
    236. name: my-nginx
    237. namespace: default
    238. spec:
    239. containers:
    240. - name: my-nginx
    241. image: nginx
    242. ports:
    243. - containerPort: 80
    244. addons_include:
    245. - https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/rook-operator.yaml
    246. - /path/to/manifest