K3s 高級(jí)選項(xiàng)和配置

2022-08-24 10:14 更新

證書輪換

默認(rèn)情況下,K3s 的證書在 12 個(gè)月內(nèi)過期。

如果證書已經(jīng)過期或剩余的時(shí)間不足 90 天,則在 K3s 重啟時(shí)輪換證書。

自動(dòng)部署清單

在?/var/lib/rancher/k3s/server/manifests?中找到的任何文件都會(huì)以類似?kubectl apply?的方式自動(dòng)部署到 Kubernetes,在啟動(dòng)和在磁盤上更改文件時(shí)都是如此。從該目錄中刪除文件不會(huì)從集群中刪除相應(yīng)的資源。

關(guān)于部署 Helm charts 的信息,請(qǐng)參閱Helm章節(jié)。

使用 Docker 作為容器運(yùn)行時(shí)

K3s 包含并默認(rèn)為containerd, 一個(gè)行業(yè)標(biāo)準(zhǔn)的容器運(yùn)行時(shí)。

要使用 Docker 而不是 containerd,

  1. 在 K3s 節(jié)點(diǎn)上安裝 Docker??梢允褂?nbsp;Rancher 的一個(gè)Docker 安裝腳本來安裝 Docker:
  2. curl https://releases.rancher.com/install-docker/19.03.sh | sh
  3. 使用?--docker?選項(xiàng)安裝 K3s:
  4. curl -sfL https://get.k3s.io | sh -s - --docker

    國內(nèi)用戶,可以使用以下方法加速安裝:

    curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - --docker
  5. 確認(rèn)集群可用:
  6. $ 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
  7. 確認(rèn) Docker 容器正在運(yùn)行:
  8. $ 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"

可選:將 crictl 與 Docker 一起使用

crictl 為兼容 CRI 的容器運(yùn)行時(shí)提供了 CLI

如果你想在使用?--docker?選項(xiàng)安裝 K3s 后使用 crictl,請(qǐng)參考官方文檔來安裝 crictl。

$ VERSION="v1.17.0"
$ curl -L https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-${VERSION}-linux-amd64.tar.gz --output crictl-${VERSION}-linux-amd64.tar.gz
$ sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
crictl

然后開始使用 crictl 命令:

$ sudo crictl version
Version:  0.1.0
RuntimeName:  docker
RuntimeVersion:  19.03.9
RuntimeApiVersion:  1.40.0
$ sudo crictl images
IMAGE                            TAG                 IMAGE ID            SIZE
rancher/coredns-coredns          1.6.3               c4d3d16fe508b       44.3MB
rancher/klipper-helm             v0.2.5              6207e2a3f5225       136MB
rancher/klipper-lb               v0.1.2              897ce3c5fc8ff       6.1MB
rancher/library-traefik          1.7.19              aa764f7db3051       85.7MB
rancher/local-path-provisioner   v0.0.11             9d12f9848b99f       36.2MB
rancher/metrics-server           v0.3.6              9dd718864ce61       39.9MB
rancher/pause                    3.1                 da86e6ba6ca19       742kB

使用 etcdctl

etcdctl 為 etcd 提供了一個(gè) CLI。

如果你想在嵌入式 etcd 的 K3s 里使用 etcdctl,請(qǐng)先參考官方文檔安裝 etcdctl。

$ VERSION="v3.5.0"
$ curl -L https://github.com/etcd-io/etcd/releases/download/${VERSION}/etcd-${VERSION}-linux-amd64.tar.gz --output etcdctl-linux-amd64.tar.gz
$ sudo tar -zxvf etcdctl-linux-amd64.tar.gz --strip-components=1 -C /usr/local/bin etcd-${VERSION}-linux-amd64/etcdctl

然后開始使用帶有適當(dāng) K3s 標(biāo)志的 etcdctl 命令:

$ sudo etcdctl --cacert=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --cert=/var/lib/rancher/k3s/server/tls/etcd/client.crt --key=/var/lib/rancher/k3s/server/tls/etcd/client.key version

配置 containerd

K3s 將會(huì)在?/var/lib/rancher/k3s/agent/etc/containerd/config.toml?中為 containerd 生成 config.toml。

如果要對(duì)這個(gè)文件進(jìn)行高級(jí)定制,你可以在同一目錄中創(chuàng)建另一個(gè)名為 ?config.toml.tmpl? 的文件,此文件將會(huì)代替默認(rèn)設(shè)置。

?config.toml.tmpl? 其實(shí)是一個(gè) Go 模板文件,并且 ?config.Node? 結(jié)構(gòu)傳遞給模板。

使用 Rootless 運(yùn)行 K3s (實(shí)驗(yàn))

警告: 這個(gè)功能是試驗(yàn)性的

Rootless 模式允許以非特權(quán)用戶的身份運(yùn)行 k3s,這樣可以保護(hù)主機(jī)上的真正的 root 免受潛在的容器攻擊。

請(qǐng)參閱 https://rootlesscontaine.rs/ 了解 Rootless 模式。

Rootless 模式的已知問題

  • 端口
  • 在 rootless 運(yùn)行時(shí),將創(chuàng)建一個(gè)新的網(wǎng)絡(luò)名稱空間。這意味著 K3s 實(shí)例在與主機(jī)完全分離的網(wǎng)絡(luò)上運(yùn)行。從主機(jī)訪問在 K3s 中運(yùn)行的服務(wù)的唯一方法是設(shè)置端口轉(zhuǎn)發(fā)到 K3s 網(wǎng)絡(luò)名稱空間。我們有一個(gè)控制器,它將自動(dòng)將 6443 和 1024 以下的服務(wù)端口綁定到主機(jī),偏移量為 10000。

    也就是說服務(wù)端口 80 在主機(jī)上會(huì)變成 10080,但 8080 會(huì)變成 8080,沒有任何偏移。

    目前,只有?LoadBalancer?服務(wù)會(huì)自動(dòng)綁定。

  • Cgroups

    不支持 Cgroup v1,支持 V2。

  • 多節(jié)點(diǎn)集群
  • 多集群安裝沒有經(jīng)過測(cè)試,也沒有記錄。

使用 Rootless 運(yùn)行 Server 和 Agent

  • 啟用 cgroup v2 授權(quán),請(qǐng)參閱 https://rootlesscontaine.rs/getting-started/common/cgroup2/ 。這一步是可選的,但強(qiáng)烈建議啟用 CPU 和內(nèi)存資源的限制。
  • https://github.com/k3s-io/k3s/blob/<VERSION>/k3s-rootless.service下載?k3s-rootless.service?。確保使用相同版本的?k3s-rootless.service?和?k3s?。
  • 將 ?k3s-rootless.service? 安裝到 ?~/.config/systemd/user/k3s-rootless.service?。不支持將該文件安裝為全系統(tǒng)服務(wù)(?/etc/systemd/...?)。根據(jù) ?k3s? 二進(jìn)制文件的路徑,你可能需要修改文件中的 ?ExecStart=/usr/local/bin/k3s ...? 行。
  • 運(yùn)行?systemctl --user daemon-reload?。
  • 運(yùn)行?systemctl --user enable --now k3s-rootless?。
  • 運(yùn)行?KUBECONFIG=~/.kube/k3s.yaml kubectl get pods -A?,并確保 pods 正在運(yùn)行。
注意:不要嘗試在終端上運(yùn)行?k3s server --rootless?,因?yàn)樗荒軉⒂?nbsp;cgroup v2 授權(quán)。 如果你真的需要在終端上運(yùn)行,請(qǐng)?jiān)?nbsp;?systemd-run --user -p Delegate=yes --tty? 前加上一個(gè) systemd 范圍。
即:?systemd-run --user -p Delegate=yes --tty k3s server --rootless?。

故障排除

  • 運(yùn)行?systemctl --user status k3s-rootless? 來檢查守護(hù)進(jìn)程的狀態(tài)。
  • 運(yùn)行?journalctl --user -f -u k3s-rootless? 查看守護(hù)程序日志。
  • 參見 https://rootlesscontaine.rs/

節(jié)點(diǎn)標(biāo)簽和污點(diǎn)

K3s agents 可以通過?--node-label?和?--node-taint?選項(xiàng)進(jìn)行配置,這兩個(gè)選項(xiàng)可以給 kubelet 添加標(biāo)簽和污點(diǎn)。這兩個(gè)選項(xiàng)只能在注冊(cè)時(shí)添加標(biāo)簽和/或污點(diǎn),所以它們只能被添加一次,之后不能再通過運(yùn)行 K3s 命令來改變。

如果你想在節(jié)點(diǎn)注冊(cè)后更改節(jié)點(diǎn)標(biāo)簽和污點(diǎn),你應(yīng)該使用?kubectl?。

使用安裝腳本啟動(dòng) Server 節(jié)點(diǎn)

安裝腳本將自動(dòng)檢測(cè)您的操作系統(tǒng)是使用 systemd 還是 openrc 并啟動(dòng)服務(wù)。當(dāng)使用 openrc 運(yùn)行時(shí),日志將在?/var/log/k3s.log?中創(chuàng)建。

當(dāng)使用 systemd 運(yùn)行時(shí),日志將在?/var/log/syslog?中創(chuàng)建,并使用?journalctl -u k3s?查看。

使用安裝腳本進(jìn)行安裝和自動(dòng)啟動(dòng)的示例:

curl -sfL https://get.k3s.io | sh -

國內(nèi)用戶,可以使用以下方法加速安裝:

curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

當(dāng)手動(dòng)運(yùn)行 server 時(shí),你應(yīng)該得到一個(gè)類似于下面的輸出:

$ k3s server
INFO[2019-01-22T15:16:19.908493986-07:00] Starting k3s dev
INFO[2019-01-22T15:16:19.908934479-07:00] Running kube-apiserver --allow-privileged=true --authorization-mode Node,RBAC --service-account-signing-key-file /var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range 10.43.0.0/16 --advertise-port 6445 --advertise-address 127.0.0.1 --insecure-port 0 --secure-port 6444 --bind-address 127.0.0.1 --tls-cert-file /var/lib/rancher/k3s/server/tls/localhost.crt --tls-private-key-file /var/lib/rancher/k3s/server/tls/localhost.key --service-account-key-file /var/lib/rancher/k3s/server/tls/service.key --service-account-issuer k3s --api-audiences unknown --basic-auth-file /var/lib/rancher/k3s/server/cred/passwd --kubelet-client-certificate /var/lib/rancher/k3s/server/tls/token-node.crt --kubelet-client-key /var/lib/rancher/k3s/server/tls/token-node.key
Flag --insecure-port has been deprecated, This flag will be removed in a future version.
INFO[2019-01-22T15:16:20.196766005-07:00] Running kube-scheduler --kubeconfig /var/lib/rancher/k3s/server/cred/kubeconfig-system.yaml --port 0 --secure-port 0 --leader-elect=false
INFO[2019-01-22T15:16:20.196880841-07:00] Running kube-controller-manager --kubeconfig /var/lib/rancher/k3s/server/cred/kubeconfig-system.yaml --service-account-private-key-file /var/lib/rancher/k3s/server/tls/service.key --allocate-node-cidrs --cluster-cidr 10.42.0.0/16 --root-ca-file /var/lib/rancher/k3s/server/tls/token-ca.crt --port 0 --secure-port 0 --leader-elect=false
Flag --port has been deprecated, see --secure-port instead.
INFO[2019-01-22T15:16:20.273441984-07:00] Listening on :6443
INFO[2019-01-22T15:16:20.278383446-07:00] Writing manifest: /var/lib/rancher/k3s/server/manifests/coredns.yaml
INFO[2019-01-22T15:16:20.474454524-07:00] Node token is available at /var/lib/rancher/k3s/server/node-token
INFO[2019-01-22T15:16:20.474471391-07:00] To join node to cluster: k3s agent -s https://10.20.0.3:6443 -t ${NODE_TOKEN}
INFO[2019-01-22T15:16:20.541027133-07:00] Wrote kubeconfig /etc/rancher/k3s/k3s.yaml
INFO[2019-01-22T15:16:20.541049100-07:00] Run: k3s kubectl

由于 agent 將創(chuàng)建大量的日志,輸出可能會(huì)更長。默認(rèn)情況下,server 會(huì)將自身注冊(cè)為一個(gè)節(jié)點(diǎn)(運(yùn)行 agent)。

Alpine Linux 安裝的額外準(zhǔn)備工作

設(shè)置 Alpine Linux 前,您需要進(jìn)行以下準(zhǔn)備工作:

  1. 更新 /etc/update-extlinux.conf 添加:
  2. default_kernel_opts="...  cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory"
  3. 更新配置并重啟:
  4. update-extlinux
    reboot

Red Hat/CentOS Enterprise Linux 的額外準(zhǔn)備工作

建議關(guān)閉 firewalld:

systemctl disable firewalld --now

如果啟用,則需要禁用 nm-cloud-setup 并重新啟動(dòng)節(jié)點(diǎn):

systemctl disable nm-cloud-setup.service nm-cloud-setup.timer
reboot

Raspberry Pi OS Setup 的額外準(zhǔn)備工作

在 Raspberry Pi OS 上啟用舊版 iptables

Raspberry Pi OS(以前稱為 Raspbian)默認(rèn)使用 ?nftables ?而不是 ?iptables?。 K3S 網(wǎng)絡(luò)功能需要 ?iptables ?并且不能與 ?nftables ?一起使用。按照以下步驟切換配置 Buster 以使用 ?legacy iptables?:

sudo iptables -F
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo reboot

為 Raspberry Pi OS 啟用 cgroups

標(biāo)準(zhǔn) Raspberry Pi OS 安裝時(shí)不會(huì)啟用 ?cgroups?。 K3S 需要 ?cgroups ?來啟動(dòng) systemd 服務(wù)。可以通過將 ?cgroup_memory=1 cgroup_enable=memory? 附加到 ?/boot/cmdline.txt? 來啟用 ?cgroups?。

在 Raspberry Pi 上的 Ubuntu 21.10+ 上啟用 vxlan

從 Ubuntu 21.10 開始,Raspberry Pi 上的 vxlan 支持已移至單獨(dú)的內(nèi)核模塊中。

sudo apt install linux-modules-extra-raspi

運(yùn)行 K3d(Docker 中的 K3s)和 docker-compose

k3d是一個(gè)設(shè)計(jì)用于在 Docker 中輕松運(yùn)行 K3s 的工具。

它可以通過 MacOS 上的brew工具安裝:

brew install k3d

?rancher/k3s?鏡像也可用于在 Docker 運(yùn)行的 K3s server 和 agent。

在 K3s repo 的根目錄下有一個(gè)?docker-compose.yml?,作為如何從 Docker 運(yùn)行 K3s 的示例。要從這個(gè) repo 中運(yùn)行?docker-compose?,請(qǐng)運(yùn)行:

docker-compose up --scale agent=3
    # kubeconfig is written to current dir

kubectl --kubeconfig kubeconfig.yaml get node

    NAME           STATUS   ROLES    AGE   VERSION
    497278a2d6a2   Ready    <none>   11s   v1.13.2-k3s2
    d54c8b17c055   Ready    <none>   11s   v1.13.2-k3s2
    db7a5a5a5bdd   Ready    <none>   12s   v1.13.2-k3s2

要只在 Docker 中運(yùn)行 agent,使用?docker-compose up agent?。

或者,也可以使用?docker run?命令:

sudo docker run \
  -d --tmpfs /run \
  --tmpfs /var/run \
  -e K3S_URL=${SERVER_URL} \
  -e K3S_TOKEN=${NODE_TOKEN} \
  --privileged rancher/k3s:vX.Y.Z

/boot/cmdline.txt 的示例

console=serial0,115200 console=tty1 root=PARTUUID=58b06195-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait cgroup_memory=1 cgroup_enable=memory

SELinux 支持

從 v1.19.4+k3s1 開始支持。從 v1.17.4+k3s1 開始是試驗(yàn)性的。

如果您在默認(rèn)啟用 SELinux 的系統(tǒng)(如 CentOS)上安裝 K3s,您必須確保安裝了正確的 SELinux 策略。

自動(dòng)安裝

從 v1.19.3+k3s2 開始可用。

如果在兼容的系統(tǒng)上,如果不執(zhí)行離線安裝,則安裝腳本將從 Rancher RPM 存儲(chǔ)庫自動(dòng)安裝 SELinux RPM??梢酝ㄟ^設(shè)置 ?INSTALL_K3S_SKIP_SELINUX_RPM=true? 來跳過自動(dòng)安裝。

手動(dòng)安裝

可以使用以下命令安裝必要的策略:

yum install -y container-selinux selinux-policy-base
yum install -y https://rpm.rancher.io/k3s/latest/common/centos/7/noarch/k3s-selinux-0.2-1.el7_8.noarch.rpm

要強(qiáng)制安裝腳本記錄警告而不是失敗,您可以設(shè)置以下環(huán)境變量: ?INSTALL_K3S_SELINUX_WARN=true?。

啟用和禁用 SELinux Enforcement

SELinux enforcement 的啟用或禁用方式取決于 K3s 的版本。

K3s v1.19.1+k3s1

要使用 SELinux,請(qǐng)?jiān)趩?dòng) K3s server 和 agent 時(shí)指定?--selinux?標(biāo)志。

這個(gè)選項(xiàng)也可以在 K3s配置文件中指定:

selinux: true

不要使用?--disable-selinux?選項(xiàng)。它已經(jīng)被廢棄,在未來的小版本中,它可能會(huì)因?yàn)楸缓雎曰虿槐蛔R(shí)別,從而導(dǎo)致錯(cuò)誤。

在 SELinux 下不支持使用自定義的?--data-dir?。要自定義它,你很可能需要編寫自己的自定義策略。為了獲得指導(dǎo),你可以參考container/container-selinux資源庫,它包含了容器運(yùn)行時(shí)的 SELinux 策略文件,以及rancher/k3s-selinux資源庫,它包含了 K3s 的 SELinux 策略。

V1.19.1+k3s1 之前的 K3s

內(nèi)置 containerd 會(huì)自動(dòng)啟用 SELinux。

要關(guān)閉嵌入式 containerd 中的 SELinux enforcement,請(qǐng)使用?--disable-selinux?標(biāo)志啟動(dòng) K3s。

在 SELinux 下不支持使用自定義的?--data-dir?。要自定義它,你很可能需要編寫自己的自定義策略。為了獲得指導(dǎo),你可以參考container/container-selinux資源庫,它包含了容器運(yùn)行時(shí)的 SELinux 策略文件,以及rancher/k3s-selinux資源庫,它包含了 K3s 的 SELinux 策略。

啟用 eStargz 的延遲拉?。▽?shí)驗(yàn)性)

什么是延遲拉取和 eStargz?

拉取鏡像被稱為容器生命周期中耗時(shí)的步驟之一。根據(jù)Harter, et al.:

拉取包占容器啟動(dòng)時(shí)間的 76%,但其中只有 6.4%的數(shù)據(jù)被讀取

為了解決這個(gè)問題,k3s 實(shí)驗(yàn)性地支持鏡像內(nèi)容的延遲拉取。這允許 k3s 在拉取整個(gè)鏡像之前啟動(dòng)一個(gè)容器。相反,按需獲取必要的內(nèi)容塊(例如單個(gè)文件)。特別是對(duì)于大鏡像,這種技術(shù)可以縮短容器啟動(dòng)延遲。

要啟用延遲拉取,目標(biāo)鏡像需要格式化為 eStargz。這是一種 OCI 的替代品,但 100% 與 OCI 兼容的鏡像格式,用于延遲拉取。由于兼容性,eStargz 可以推送到標(biāo)準(zhǔn)容器注冊(cè)表(例如 ghcr.io),并且即使在 eStargz-agnostic 運(yùn)行時(shí),它也仍然可運(yùn)行。

eStargz 是基于谷歌 CRFS 項(xiàng)目提出的 stargz 格式開發(fā)的,具有內(nèi)容驗(yàn)證、性能優(yōu)化等實(shí)用功能。

關(guān)于延遲拉取和 eStargz 的更多細(xì)節(jié),請(qǐng)參考 Stargz Snapshotter 項(xiàng)目資源庫。

配置 k3s 進(jìn)行 eStargz 的延遲拉取

如以下所示,k3s server 和 agent 需要 ?--snapshotter=stargz? 選項(xiàng)。

k3s server --snapshotter=stargz

使用此配置,您可以對(duì) eStargz 格式的鏡像執(zhí)行延遲拉取。以下 Pod 清單使用 eStargz 格式的 ?node:13.13.0? 鏡像 (?ghcr.io/stargz-containers/node:13.13.0-esgz?)。k3s 對(duì)這個(gè)鏡像進(jìn)行了延遲拉取。

apiVersion: v1
kind: Pod
metadata:
  name: nodejs
spec:
  containers:
  - name: nodejs-estargz
    image: ghcr.io/stargz-containers/node:13.13.0-esgz
    command: ["node"]
    args:
    - -e
    - var http = require('http');
      http.createServer(function(req, res) {
        res.writeHead(200);
        res.end('Hello World!\n');
      }).listen(80);
    ports:
    - containerPort: 80

其他日志源

可以在不使用 Rancher 的情況下安裝 K3s 的 Rancher 日志。應(yīng)執(zhí)行以下指令來實(shí)現(xiàn):

helm repo add rancher-charts https://charts.rancher.io
helm repo update
helm install --create-namespace -n cattle-logging-system rancher-logging-crd rancher-charts/rancher-logging-crd
helm install --create-namespace -n cattle-logging-system rancher-logging --set additionalLoggingSources.k3s.enabled=true rancher-charts/rancher-logging

Server 和 agent token

在 K3s 中,有兩種類型的 token:K3S_TOKEN 和 K3S_AGENT_TOKEN。

K3S_TOKEN:定義了 server 提供 HTTP 配置資源所需的密鑰。其他 server 在加入 K3s HA 集群之前會(huì)請(qǐng)求這些資源。如果沒有定義 K3S_AGENT_TOKEN,agent 也使用這個(gè) token 來訪問加入集群所需的 HTTP 資源。請(qǐng)注意,這個(gè) token 還用于為數(shù)據(jù)庫中的重要內(nèi)容(例如引導(dǎo)數(shù)據(jù))生成加密密鑰。

K3S_AGENT_TOKEN(可選):定義了 server 向 agent 提供 HTTP 配置資源所需的密鑰。如果沒有定義,agent 將需要 K3S_TOKEN。推薦使用 K3S_AGENT_TOKEN 避免 agent 節(jié)點(diǎn)必須知道 K3S_TOKEN,它也用于加密數(shù)據(jù)。

如果沒有定義 K3S_TOKEN,第一個(gè) K3s server 將生成一個(gè)隨機(jī)的 K3S_TOKEN。其結(jié)果是 /var/lib/rancher/k3s/server/token 中的部分內(nèi)容。例如,K1070878408e06a827960208f84ed18b65fa10f27864e71a57d9e053c4caff8504b::server:df54383b5659b9280aa1e73e60ef78fc,其中 df54383b5659b9280aa1e73e60ef78fc 是 K3S_TOKEN。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)