所有服务都支持额外的。

Kubernetes 使用etcd作为集群状态和数据的存储。etcd 是一个可靠的、一致的、分布式的键值存储。

RKE 支持在单节点模式或 HA 集群模式下运行 etcd。它还支持向集群中添加和移除 etcd 节点。

您可以启用 etcd 来。

默认情况下,RKE 会部署一个新的 etcd 服务,但您也可以使用外部 etcd 服务来运行 Kubernetes。

Kubernetes API Server

Kubernetes API REST 服务,处理所有 Kubernetes 对象的请求和数据,并为所有其他 Kubernetes 组件提供共享状态。

  • 服务集群 IP 范围 (service_cluster_ip_range) - 这是将分配给 Kubernetes 上创建的服务的虚拟 IP 地址。默认情况下,服务集群 IP 范围是10.43.0.0/16。如果您改变了这个值,那么也必须在 Kubernetes 控制器管理器(kube-controller)上设置相同的值。
  • 节点端口范围 (service_node_port_range) - 使用 NodePort创建的 Kubernetes 服务的端口范围。默认情况下,端口范围是30000-32767
  • Pod 安全策略 (pod_security_policy) - 启用Kubernetes Pod 安全策略的选项。默认情况下,我们不会启用 pod 安全策略,因为它被设置为false

  • 拉取镜像 (always_pull_images) - 启用AlwaysPullImages Admission 控制器插件。启用AlwaysPullImages是一个安全的最佳实践。它强制 Kubernetes 与远程图像注册表验证图像和拉动凭证。本地图像层缓存仍将被使用,但它确实会在启动容器拉取和比较图像哈希时增加一点开销。注:从 v0.2.0 开始提供

服务是负责运行 Kubernetes 主控制循环的组件。控制器管理器通过 Kubernetes API 服务器监控集群所需的状态,并对当前状态进行必要的修改,以达到所需的状态。

RKE 支持kube-controller服务的以下选项。

  • 集群 CIDR (cluster_cidr) - 用于为集群中的 pod 分配 IP 地址的 CIDR 池。默认情况下,集群中的每个节点都会从该池中分配一个/24网络,用于分配 pod IP。该选项的默认值是10.42.0.0/16
  • 服务集群 IP 范围 (service_cluster_ip_range) - 这是将分配给 Kubernetes 上创建的服务的虚拟 IP 地址。默认情况下,服务集群 IP 范围是10.43.0.0/16。如果您改变了这个值,那么也必须在 Kubernetes API 服务器(kube-api)上设置相同的值。

Kubelet

服务作为 Kubernetes 的 “节点代理”。它运行在 RKE 部署的所有节点上,并让 Kubernetes 有能力管理节点上的容器运行时。

  • 集群域 (cluster_domain) - 集群的基本域。集群上创建的所有服务和 DNS 记录。默认情况下,域被设置为cluster.local
  • 集群 DNS 服务器 (cluster_dns_server) - 分配给集群内 DNS 服务端点的 IP 地址。DNS 查询将被发送到这个 IP 地址,该地址被 KubeDNS 使用。这个选项的默认值是10.43.0.10
  • Fail if Swap is On () - 在 Kubernetes 中,如果节点上启用了 swap,kubelet 的默认行为是失败。RKE 不会遵循这个默认值,而是允许在启用 swap 的节点上进行部署。默认情况下,这个值是false。如果您想恢复到默认的 kubelet 行为,请将此选项设置为 “true”。
  • Generate Serving Certificate (generate_serving_certificate) - 为 kubelet 生成一个由kube-ca证书颁发机构签署的证书作为服务器证书。这个选项的默认值是false。在启用这个选项之前,请参考下文的 Kubelet Serving Certificate 需求。

如果在cluster.yml中为一个或多个节点配置了hostname_override,请确保在address中配置了正确的 IP 地址(以及internal_address中的内部地址),以确保生成的证书包含正确的 IP 地址。

一个错误的例子是,在 EC2 实例中,如果在address中配置了公共 IP 地址,并且使用了hostname_override,那么kube-apiserverkubelet之间的连接将失败,因为kubelet将在私有 IP 地址上被联系,生成的证书将无效(将看到错误x509:证书对 value_in_address 有效,而不是 private_ip)。解决方法是在internal_address中提供内部 IP 地址。

关于主机覆盖的更多信息,请参考。

Kubernetes Scheduler服务负责根据各种配置、指标、资源需求和工作负载的特定要求来调度集群工作负载。

目前,RKE 并不支持scheduler服务的任何特定选项。

Kubernetes Network Proxy

Kubernetes 网络代理服务运行在所有节点上,管理 Kubernetes 创建的 TCP/UDP 端口的端点。

目前,RKE 不支持 “kubeproxy “服务的任何特定选项。