K3S部署和使用
k3s介绍
k3s是一个高可用的、经过CNCF认证的Kubernetes发行版,专为无人值守、资源受限、偏远地区或物联网设备内部的生产工作负载而设计。
k3s安装
参考文件
使用配置文件安装k3s
为了保证k3s的可迁移性,我们使用配置文件安装k3s。默认情况下,位于/etc/rancher/k3s/config.yaml
的 YAML 文件中的值将在安装时使用。
cluster-cidr: '172.16.100.0/24' service-cidr: '172.16.110.0/24' data-dir: '/k3s/data'
配置文件的位置可以通过 cli 参数--config FILE,-c FILE
或者环境变量$K3S_CONFIG_FILE
来改变。
使用安装脚本安装k3s
安装命令
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_SYMLINK=skip INSTALL_K3S_BIN_DIR=/k3s/bin K3S_CONFIG_FILE=/k3s/config.yaml sh
此时k3s安装完成
k3s使用
安装完成后进入到我们的/k3s/bin
目录可以看到相关命令
测试集群是否启动
部署k3s的helm controller
k3s相关文档
部署helm controller
找到最新版本的releases,可以看到官方提供的yaml文件
可以看到官方提供了集群范围和命名空间范围的yaml文件,我们使用集群范围的yaml文件来部署helm controller
找到我们k3s的data目录中server的manifests目录
下载官方提供的yaml文件到相关目录
wget https://github.com/k3s-io/helm-controller/releases/download/v0.13.1/deploy-cluster-scoped.yaml
再次查看deployment,可以看到helm controller已经安装
Helm Controller使用 HelmChart 自定义资源定义 (CRD) 管理 Helm Chart
使用helm CRD
HelmChart 资源定义捕获了你通常传递给 helm
命令行工具的大部分选项。也就是说我们使用HelmChart资源来使用helm命令。下面示例是从jenkins的helm仓库部署jenkins到jenkins命名空间。HelmChart 资源本身位于 kube-system
命名空间中,但 Chart 的资源将部署到 jenkins
命名空间。
apiVersion: helm.cattle.io/v1 kind: HelmChart metadata: name: jenkinsci namespace: kube-system spec: repo: https://charts.jenkins.io chart: jenkins targetNamespace: jenkins valuesContent: |- persistence: storageClass: local-path controller: serviceType: NodePort initScripts: - | System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai') System.setProperty('user.timezone', 'Asia/Shanghai')
HelmChart 字段定义
字段 | 默认 | 描述 | Helm 参数/标志等效项 |
---|---|---|---|
name | Helm Chart 名称 | NAME | |
spec.chart | 仓库中的 Helm Chart 名称,或 chart archive (.tgz) 的完整 HTTPS URL | CHART | |
spec.targetNamespace | default | Helm Chart 目标命名空间 | --namespace |
spec.version | Helm Chart 版本(通过仓库安装时) | --version | |
spec.repo | Helm Chart 仓库 URL | --repo | |
spec.helmVersion | v3 | 要使用的 Helm 版本(v2 或 v3 ) | |
spec.bootstrap | False | 如果需要此 Chart 来引导集群(Cloud Controller Manager 等),请设置为 True | |
spec.set | 覆盖简单的默认 Chart 值。优先于通过 valuesContent 设置的选项。 | --set / --set-string | |
spec.jobImage | 指定安装 helm chart 时要使用的镜像。例如:rancher/klipper-helm:v0.3.0 | ||
spec.valuesContent | 通过 YAML 文件内容覆盖复杂的默认 Chart 值 | --values | |
spec.chartContent | Base64 编码的 chart archive .tgz,覆盖 spec.chart | CHART |
安装helm CRD
编辑好yaml文件后直接安装即可
k3s kubectl apply -f jenkins-crd.yaml
查看我们安装好的helmchart crd
k3s kubectl get helmchart -A
查看jenkins
k3s kubectl get all -n jenkins
此时可以看到jenkins已经安装
k3s的备份和还原
参考资料
k3s备份
默认情况下k3s使用SQLite作为数据库,这里我们需要手动备份k3s data目录的数据,默认路径为/var/lib/rancher/k3s/server
k3s还原
在另外一台机器上先安装k3s
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_SYMLINK=skip INSTALL_K3S_BIN_DIR=/k3s/bin K3S_CONFIG_FILE=/k3s/config.yaml sh
安装完成后停止k3s服务
恢复之前备份的server目录
重新启动k3s
可以看到这里的k3s启动时间等信息并不是一个新创建的集群,证明我们备份还原成功