两个月前,业界应用最为普遍的Kubernetes管理平台建立者Rancher Labs(如下简称Rancher)在KubeCon2019北美峰会上宣布,Rancher打造的轻量级Kubernetes发行版k3s正式GA,这款产品专为在资源有限的环境设计,能够知足在边缘计算环境中、在小型设备上运行Kubernetes集群的需求。在这以后,咱们依旧持续受到全球开发者的关注,到12月末,Github Star突破了11,000。nginx
本周,k3s发布新版本v1.17.0+k3s.1,这一版本是GA后的首个重大变动版本,本文将针对该版本进行简要说明。git
以前k3s一直都使用通用的版本号,如v0.一、v0.二、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版本。github
一般,咱们都是经过Helm的CLI工具来管理chart。此前的k3s版本仅仅支持Helm2,在本次发布的新版本中增长了对Helm3的支持。Helm3中移除了Tiller组件,其自己的简洁性给k3s的使用带来了便利。在新版本的k3s中,Helm3的使用方式以下:redis
$ 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内置的ingress-controller,可是默认经过Helm安装,因此这里咱们能够读取到,请不要误删。docker
针对Helm的使用,k3s还有另一种方式,就是经过“Auto-Deploying Manifests”功能来部署chart,固然它须要咱们使用自定义CRD进行描述。这是k3s经过内置了一个本身实现的helm controller(https://github.com/rancher/helm-controller)来实现的,为了同时兼容Helm3和Helm2,咱们增长了helmVersion进行说明,好比:api
# 默认使用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/ide
咱们都知道Kubernetes的Pod都须要一个pause镜像,此前的k3s版本使用的是gcr仓库的pause镜像,这增长了国内用户初次安装的难度,体验并不友好。新版本对此进行了优化,已经将pause镜像的地址配置使用DockerHub,这样对于刚接触k3s的用户来讲,极大下降了初次部署的难度:工具
$ crictl images | grep pause IMAGE TAG IMAGE ID SIZE docker.io/rancher/pause 3.1 da86e6ba6ca19 327kB
关于这一issue更详细的说明,请参考:优化
https://github.com/rancher/k3s/issues/1128
k3s内置实现了svclb,换言之,用户能够无需其余配置就可以使用type=Loadbalancer的service。在此前的版本中UDP端口的使用存在一些问题,此版本中进行了修复:
https://github.com/rancher/k3s/issues/577
k3s内置部署了metric-server,方便用户查看各类资源的度量信息。在此前的版本中,有用户反馈metrics信息查不到的状况,通过排查发现是部分架构的metric-server镜像没有推送完整,致使可能使用非amd64的镜像出现问题。在这一版本中也已经修复:
https://github.com/rancher/k3s/issues/1189
更多其余issue,请查看milestone:
https://github.com/rancher/k3s/milestone/13?closed=1
关于新版本的更多信息,请查阅Release Note:
https://github.com/rancher/k3s/releases/tag/v1.17.0+k3s.1
k3s发布至今,一直保持高速发展的态势。去年11月中旬发布了GA版本,Github Star数已经超过11,000。也有用户开始在生产环境中尝试使用k3s而且取得了不错的效果。做为一个发布不到一年的开源产品,当然不完美,也所以遭受了诸多质疑甚至谩骂攻击,咱们十分理解用户的心情,也会坚守技术创新的初心。k3s的研发团队也在不断努力,针对社区用户提出的问题以及诸如边缘计算、嵌入式设备、CI环境等实际使用场景对k3s进行优化和完善。同时,咱们很是欢迎各路豪杰参与k3s的改进。
k3s Github: