高级选项和配置
本文描述了用于运行和管理 K3s 的高级设置,以及为 K3s 准备主机操作系统所需的步骤。
证书管理
CA 证书
K3s 在第一个 Server 节点启动时生成自签名 CA 证书。这些 CA 证书的有效期为 10 年,不会自动更新。
有关使用自定义 CA 证书或更新自签名 CA 证书的信息,请参阅 k3s certificate rotate-ca
命令文档。
客户端和服 务器证书
K3s 客户端和服务器证书自颁发日起 365 天内有效。每次启动 K3s 时,已过期或 90 天内过期的证书都会自动更新。
有关手动轮换客户端和服务器证书的信息,请参阅 k3s certificate rotate
命令文档。
Token 管理
默认情况下,K3s 为 Server 和 Agent 使用单个静态 Token。创建集群后不能更改此 Token。
你可以启用只能用于加入 Agent 的第二个静态 Token,或创建自动过期的临时 kubeadm
联接样式 Token。
有关详细信息,请参阅 k3s token
命令文档。
配置 HTTP 代理
如果你运行 K3s 的环境中只通过 HTTP 代理进行外部连接,你可以在 K3s 的 systemd 服务上配置代理。K3s 将使用这些代理设置,并向下传递到嵌入式 containerd 和 kubelet。
K3s 安装脚本会自动使用当前 shell 中的 HTTP_PROXY
、HTTPS_PROXY
和 NO_PROXY
,以及 CONTAINERD_HTTP_PROXY
、CONTAINERD_HTTPS_PROXY
和 CONTAINERD_NO_PROXY
变量(如果存在),并将它们写入 systemd 服务的环境文件,通常是:
/etc/systemd/system/k3s.service.env
/etc/systemd/system/k3s-agent.service.env
你也可以通过编辑这些文件来配置代理。
K3s 会自动将集群内部 Pod 和 Service IP 范围以及集群 DNS 域添加到 NO_PROXY
条目列表中。你需要确保 Kubernetes 节点本身使用的 IP 地址范围(即节点的公共和私有 IP)包含在 NO_PROXY
列表中,或者可以通过代理访问节点。
HTTP_PROXY=http://your-proxy.example.com:8888
HTTPS_PROXY=http://your-proxy.example.com:8888
NO_PROXY=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
如果你想在不影响 K3s 和 Kubelet 的情况下为 containerd 配置代理,你可以在变量前加上 CONTAINERD_
:
CONTAINERD_HTTP_PROXY=http://your-proxy.example.com:8888
CONTAINERD_HTTPS_PROXY=http://your-proxy.example.com:8888
CONTAINERD_NO_PROXY=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
使用 Docker 作为容器运行时
K3s 包含并默认为 containerd,它是一个行业标准的容器运行时。 从 Kubernetes 1.24 开始,Kubelet 不再包含 dockershim,该组件允许 kubelet 与 dockerd 通信。 K3s 1.24 及更高版本包括了 cri-dockerd,它允许你无缝升级旧的 K3s 版本,同时继续使用 Docker 容器运行时。
要使用 Docker 而不是 containerd:
-
在 K3s 节点上安装 Docker。你可以使用 Rancher 的一个 Docker 安装脚本来安装 Docker:
curl https://releases.rancher.com/install-docker/20.10.sh | sh
-
使用
--docker
选项安装 K3s:curl -sfL https://get.k3s.io | sh -s - --docker
-
确认集群可用:
$ sudo k3s kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system local-path-provisioner-6d59f47c7-lncxn 1/1 Running 0 51s
kube-system metrics-server-7566d596c8-9tnck 1/1 Running 0 51s
kube-system helm-install-traefik-mbkn9 0/1 Completed 1 51s
kube-system coredns-8655855d6-rtbnb 1/1 Running 0 51s
kube-system svclb-traefik-jbmvl 2/2 Running 0 43s
kube-system traefik-758cd5fc85-2wz97 1/1 Running 0 43s -
确认 Docker 容器正在运行:
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3e4d34729602 897ce3c5fc8f "entry" About a minute ago Up About a minute k8s_lb-port-443_svclb-traefik-jbmvl_kube-system_d46f10c6-073f-4c7e-8d7a-8e7ac18f9cb0_0
bffdc9d7a65f rancher/klipper-lb "entry" About a minute ago Up About a minute k8s_lb-port-80_svclb-traefik-jbmvl_kube-system_d46f10c6-073f-4c7e-8d7a-8e7ac18f9cb0_0
436b85c5e38d rancher/library-traefik "/traefik --configfi…" About a minute ago Up About a minute k8s_traefik_traefik-758cd5fc85-2wz97_kube-system_07abe831-ffd6-4206-bfa1-7c9ca4fb39e7_0
de8fded06188 rancher/pause:3.1 "/pause" About a minute ago Up About a minute k8s_POD_svclb-traefik-jbmvl_kube-system_d46f10c6-073f-4c7e-8d7a-8e7ac18f9cb0_0
7c6a30aeeb2f rancher/pause:3.1 "/pause" About a minute ago Up About a minute k8s_POD_traefik-758cd5fc85-2wz97_kube-system_07abe831-ffd6-4206-bfa1-7c9ca4fb39e7_0
ae6c58cab4a7 9d12f9848b99 "local-path-provisio…" About a minute ago Up About a minute k8s_local-path-provisioner_local-path-provisioner-6d59f47c7-lncxn_kube-system_2dbd22bf-6ad9-4bea-a73d-620c90a6c1c1_0
be1450e1a11e 9dd718864ce6 "/metrics-server" About a minute ago Up About a minute k8s_metrics-server_metrics-server-7566d596c8-9tnck_kube-system_031e74b5-e9ef-47ef-a88d-fbf3f726cbc6_0
4454d14e4d3f c4d3d16fe508 "/coredns -conf /etc…" About a minute ago Up About a minute k8s_coredns_coredns-8655855d6-rtbnb_kube-system_d05725df-4fb1-410a-8e82-2b1c8278a6a1_0
c3675b87f96c rancher/pause:3.1 "/pause" About a minute ago Up About a minute k8s_POD_coredns-8655855d6-rtbnb_kube-system_d05725df-4fb1-410a-8e82-2b1c8278a6a1_0
4b1fddbe6ca6 rancher/pause:3.1 "/pause" About a minute ago Up About a minute k8s_POD_local-path-provisioner-6d59f47c7-lncxn_kube-system_2dbd22bf-6ad9-4bea-a73d-620c90a6c1c1_0
64d3517d4a95 rancher/pause:3.1 "/pause"