前 言
兩個月前夕吻,業(yè)界應用最為廣泛的Kubernetes管理平臺創(chuàng)建者Rancher Labs(以下簡稱Rancher)在KubeCon2019北美峰會上宣布诲锹,Rancher打造的輕量級Kubernetes發(fā)行版k3s正式GA,這款產(chǎn)品專為在資源有限的環(huán)境設計涉馅,可以滿足在邊緣計算環(huán)境中归园、在小型設備上運行Kubernetes集群的需求。在這之后稚矿,我們依舊持續(xù)受到全球開發(fā)者的關(guān)注庸诱,到12月末,Github Star突破了11,000晤揣。
本周桥爽,k3s發(fā)布新版本v1.17.0+k3s.1,這一版本是GA后的首個重大變更版本碉渡,本文將針對該版本進行簡要說明聚谁。
版本號命名規(guī)則
之前k3s一直都使用通用的版本號,如v0.1滞诺、v0.2形导、v1.0等。由于k3s從K8s衍生而來习霹,每個k3s版本都會對應一個Kubernetes版本朵耕,比如k3s v1.0對應的是Kubernetes v1.16.3,但是這些信息需要在Release Note中查找淋叶,這給用戶帶來了極大的不便阎曹。Rancher一向重視用戶的使用體驗,因此更改了k3s的版本號命名方式煞檩。新的版本號命名方式采用“<K8s version>+<k3s metadata>
”的格式处嫌,比如v1.17.0+k3s.1版本,如此用戶就能顯而易見地清楚當前對應的Kubernetes版本斟湃。
v1.17.0+k3s.1重要改進
Helm2切換到Helm3
通常熏迹,我們都是通過Helm的CLI工具來管理chart。此前的k3s版本僅僅支持Helm2凝赛,在本次發(fā)布的新版本中增加了對Helm3的支持注暗。Helm3中移除了Tiller組件,其本身的簡潔性給k3s的使用帶來了便利墓猎。在新版本的k3s中捆昏,Helm3的使用方式如下:
$ helm --kubeconfig /etc/rancher/k3s/k3s.yaml repo add helm-stable https://kubernetes-charts.storage.googleapis.com/
"helm-stable" has been added to your repositories
$ helm --kubeconfig /etc/rancher/k3s/k3s.yaml search repo nginx
NAME CHART VERSION APP VERSION DESCRIPTION
helm-stable/nginx-ingress 1.28.0 0.26.2 An nginx Ingress controller that uses ConfigMap...
helm-stable/nginx-ldapauth-proxy 0.1.3 1.13.5 nginx proxy with ldapauth
helm-stable/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego
helm-stable/gcloud-endpoints 0.1.2 1 DEPRECATED Develop, deploy, protect and monitor…
$ helm --kubeconfig /etc/rancher/k3s/k3s.yaml install helm-stable/redis --generate-name
$ helm --kubeconfig /etc/rancher/k3s/k3s.yaml list --all-namespaces
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
redis-1578463519 default 1 2020-01-08 06:05:22.482166284 +0000 UTC deployed redis-10.3.1 5.0.7
traefik kube-system 1 2020-01-08 05:24:20.987390979 +0000 UTC deployed traefik-1.81.0 1.7.19
注意:traefik是k3s內(nèi)置的ingress-controller,但是默認通過Helm安裝毙沾,所以這里我們可以讀取到骗卜,請不要誤刪。
針對Helm的使用,k3s還有另外一種方式寇仓,就是通過“Auto-Deploying Manifests”功能來部署chart勇皇,當然它需要我們使用自定義CRD進行描述。這是k3s通過內(nèi)置了一個自己實現(xiàn)的helm controller(https://github.com/rancher/helm-controller)來實現(xiàn)的焚刺,為了同時兼容Helm3和Helm2,我們增加了helmVersion進行說明门烂,比如:
# 默認使用helm3乳愉,如使用helm2則指定helmVersion
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: grafana
namespace: kube-system
spec:
chart: stable/grafana
helmVersion: v2
targetNamespace: monitoring
set:
adminPassword: "NotVerySafePassword"
valuesContent: |-
image:
tag: master
env:
GF_EXPLORE_ENABLED: true
adminUser: admin
sidecar:
datasources:
enabled: true
此處更詳細的信息,請參考官方文檔:
https://rancher.com/docs/k3s/latest/en/advanced/
pause容器問題
我們都知道Kubernetes的Pod都需要一個pause鏡像屯远,此前的k3s版本使用的是gcr倉庫的pause鏡像蔓姚,這增加了國內(nèi)用戶初次安裝的難度,體驗并不友好慨丐。新版本對此進行了優(yōu)化坡脐,已經(jīng)將pause鏡像的地址配置使用DockerHub,這樣對于剛接觸k3s的用戶來說房揭,極大降低了初次部署的難度:
$ crictl images | grep pause
IMAGE TAG IMAGE ID SIZE
docker.io/rancher/pause 3.1 da86e6ba6ca19 327kB
關(guān)于這一issue更詳細的說明备闲,請參考:
https://github.com/rancher/k3s/issues/1128
其他
k3s內(nèi)置實現(xiàn)了svclb,換言之捅暴,用戶可以無需其他配置就能夠使用type=Loadbalancer的service恬砂。在此前的版本中UDP端口的使用存在一些問題,此版本中進行了修復:
https://github.com/rancher/k3s/issues/577
k3s內(nèi)置部署了metric-server蓬痒,方便用戶查看各種資源的度量信息泻骤。在此前的版本中,有用戶反饋metrics信息查不到的情況梧奢,經(jīng)過排查發(fā)現(xiàn)是部分架構(gòu)的metric-server鏡像沒有推送完整狱掂,導致可能使用非amd64的鏡像出現(xiàn)問題。在這一版本中也已經(jīng)修復:
https://github.com/rancher/k3s/issues/1189
更多其他issue亲轨,請查看milestone:
https://github.com/rancher/k3s/milestone/13?closed=1
關(guān)于新版本的更多信息趋惨,請查閱Release Note:
https://github.com/rancher/k3s/releases/tag/v1.17.0+k3s.1
后 記
k3s發(fā)布至今,一直保持高速發(fā)展的態(tài)勢瓶埋。去年11月中旬發(fā)布了GA版本希柿,Github Star數(shù)已經(jīng)超過11,000。也有用戶開始在生產(chǎn)環(huán)境中嘗試使用k3s并且取得了不錯的效果养筒。作為一個發(fā)布不到一年的開源產(chǎn)品曾撤,固然不完美,也因此遭受了諸多質(zhì)疑甚至謾罵攻擊晕粪,我們十分理解用戶的心情挤悉,也會堅守技術(shù)創(chuàng)新的初心。k3s的研發(fā)團隊也在不斷努力巫湘,針對社區(qū)用戶提出的問題以及諸如邊緣計算装悲、嵌入式設備昏鹃、CI環(huán)境等實際使用場景對k3s進行優(yōu)化和完善。同時诀诊,我們非常歡迎各路豪杰參與k3s的改進洞渤。
k3s Github: