先安裝K3s, 在 2021/04/30 使用官方的script安裝
curl -sfL https://get.k3s.io | sh -
K3s版本會是v1.20.6+k3s1
, 預設會安裝Traefik,但版本還是v1.7.19
翻開Traefik的歷史,v2.0.0於 2019/09/17 就於Github釋出,距今有一段時間了,再加上v1和v2有一些使用上的差異,需要做migration。為了避免以後升級額外處理,如果能直接使用v2是最好的。而K3s Github上,關於Traefik v2的整合也很早在 2019/11/27 提出討論,終於在今年 2021/03/02 併入主線,看起來釋出v1.21版本時所搭配的Traefik就會是v2的版本。以下就簡單的記錄一下,如何在現有的環境中安裝v2。
首先修改/var/lib/rancher/k3s/server/manifests/traefik.yaml
的內容換成以下
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: traefik
namespace: kube-system
spec:
chart: traefik
repo: https://containous.github.io/traefik-helm-chart
set:
image.tag: "2.2"
檢查pod的狀態,可以看到helm執行了traefik的安裝
buntu@test:~$ sudo kubectl -n kube-system get pod
NAME READY STATUS RESTARTS AGE
metrics-server-86cbb8457f-rjth8 1/1 Running 0 26m
local-path-provisioner-5ff76fc89d-shtp5 1/1 Running 0 26m
coredns-854c77959c-pqhrl 1/1 Running 0 26m
helm-install-traefik-w5cx9 1/1 Running 1 11s
svclb-traefik-f6rt8 0/2 Terminating 0 25m
檢查新的traefik pod,就可以看到v2的版本了
ubuntu@test:~$ sudo kubectl -n kube-system describe pod traefik-57f74867d5-kv5lc
Name: traefik-57f74867d5-kv5lc
Namespace: kube-system
Priority: 0
Node: test/192.168.64.5
Start Time: Sat, 01 May 2021 17:12:41 +0800
Labels: app.kubernetes.io/instance=traefik
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=traefik
helm.sh/chart=traefik-9.1.1
pod-template-hash=57f74867d5
Annotations: <none>
Status: Running
IP: 10.42.0.9
IPs:
IP: 10.42.0.9
Controlled By: ReplicaSet/traefik-57f74867d5
Containers:
traefik:
Container ID: containerd://6f506dbd820bb587bb901ad4a759f0d44e3b6851e9c0f57a7f6682fa68b72f1f
Image: traefik:2.2
Image ID: docker.io/library/traefik@sha256:ea0aa8832bfd08369166baecd40b35fc58979df8f5dc5182e4e63ee6adbe66db
Ports: 9000/TCP, 8000/TCP, 8443/TCP
Host Ports: 0/TCP, 0/TCP, 0/TCP