K3s是一个轻量级的Kubernetes发行版(小于40MB),并且非常易于安装,仅需要512MB的RAM。它能够完美满足IoT设备以及边缘计算的需求。在本文中,我们将创建一个k3s集群并且展示如何将其集成到一个Gitlab的项目中。

关于k3s
K3s是由Rancher Labs发布的一个轻量级Kubernetes发行版,这款产品专为在资源有限的环境中运行Kubernetes的研发和运维人员设计。
它是经过认证的Kubernetes发行版,其最低的系统要求为:
这些低配置的要求使得k3s非常适用于IoT相关的场景。
在GitLab中创建项目
在安装k3s之前,我们先在Gitlab上创建一个新的项目,称为api。

创建完成之后,我们点击侧边菜单栏里的Operations,并在下级菜单中选择Kubernetes。

我们现在有两个选项:
注意:在当前版本的GitLab中,新集群的创建仅限于GKE。

我们选择【Add existing cluster】这一选项卡。

在这一步中,我们需要填写几个字段来提供我们需要集成的集群配置。一直打开这个选项卡,暂时无需理会。现在,我们先去创建一个全新的Kubernetes集群。
创建一个k3s集群
我们现在将基于k3s启动一个Kubernetes集群。为什么是k3s呢?因为我想要表明设置它是多么容易。为了让步骤一目了然,我们仅仅设置一个节点的集群。
我已经配置了名为node1的Ubuntu 18.04服务器,我们在该主机上获得了一个shell之后,只需要运行以下命令来安装k3s,这是一个经过认证的Kubernetes集群。
root@node1:~ $ curl -sfL https://get.k3s.io | sh -
上面的命令类似于用于快速Docker安装的命令:
curl https://get.docker.com | sh
安装完毕之后,可以在*/etc/rancher/k3s/k3s.yaml*中找到连接到集群的配置文件。
root@node1:~ $ cat /etc/rancher/k3s/k3s.yaml
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tL...tCg==
server: https://localhost:6443
name: default
contexts:
- context:
cluster: default
user: default
name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
user:
password: 48f4b...4b4e7
username: admin
本地kubectl将自动使用此配置。
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
node1 Ready master 3m v1.14.5-k3s.1
注意:正如我们看到的Quick Start那样(https://k3s.io/ ),添加额外的节点并不复杂,它基本上只需要从主服务器上的/var/lib/rancher/k3s/server/node-token获取一个令牌,并使用以下命令即可连接其他一些节点:
$ curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=XXX sh -
在Gitlab中集成
现在让我们获取在Gitlab项目中集成全新的k3s集群所需的所有信息。
$ kubectl config view --raw \
-o=jsonpath='{.clusters[0].cluster.certificate-authority-data}' \
| base64 --decode
- Service token:获取一个识别令牌的过程牵涉到几个步骤。我们首先需要创建一个ServiceAccount并且向它提供一个cluster-admin角色。以下命令可以完成这些步骤:
$ cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: gitlab-admin
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: gitlab-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: gitlab-admin
namespace: kube-system
EOF
当service account创建完毕之后,我们检索关联的类型secret的资源:
$ SECRET=$(kubectl -n kube-system get secret | grep gitlab-admin | awk '{print $1}')
下一步是提取与secret关联的JWT令牌:
$ TOKEN=$(kubectl -n kube-system get secret $SECRET -o jsonpath='{.data.token}' | base64 --decode)
$ echo $TOKEN
我们已经完成了所有设置,现在回到之前打开的选项卡中,开始使用所有信息并填写Gitlab 【Add existing cluster 】表单的字段:

集群集成之后,我们可以直接从web界面安装helm(Kubernetes包管理器)。


现在,我们可以从命令行检查tiller 守护程序(helm的服务器端组件)是否运行。
$ kubectl get deploy --all-namespaces | grep tiller
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
gitlab-managed-apps tiller-deploy 1/1 1 1 67s
集群现在已经可以使用了。除此之外,GitLab的Web界面允许一键安装其他组件:
-
Ingress Controller,暴露集群中运行的服务
-
Cert-Manager,使用Let's Encrypt管理TLS证书
-
Prometheus,监控运行在集群中 的应用程序
-
Knative,部署Serverless工作负载

总 结
在本文中,我们了解如何创建一个k3s集群并且将其集成到一个Gitlab项目中。当然,任何Kubernetes集群都可以使用相同的过程。
我们现在可以添加各种资源到项目中:
相关推荐
《金蝶K3 V11.0.1标准供应链实操案例手册》是针对金蝶K3系统的供应链管理模块提供的一份详尽的操作指南。金蝶K3是一款全面的企业资源规划(ERP)软件,其中供应链管理是核心组成部分,涵盖了采购、库存、销售、生产...
本文将深入探讨如何使用k3s-ansible项目来自动化部署k3s Kubernetes集群。Ansible基于YAML的playbook语法使得配置易于理解和维护,它通过SSH连接到目标主机并执行预定义的任务,从而实现无代理的自动化。 1. **...
K3S集群客户端连接工具
在本文中,我们将深入探讨如何在Ubuntu 22.04上部署K3s轻量化 Kubernetes 集群。K3s是由Rancher Labs开发的一款小巧、高效且符合Kubernetes标准的容器编排系统,特别适合边缘计算、物联网(IoT)场景以及资源有限的...
根据提供的文件标题、描述、标签以及部分内容,我们可以总结并提炼出关于“K3V11.0.1标准供应链实操案例手册”的一系列关键知识点。 ### K3V11.0.1标准供应链实操案例手册核心知识点 #### 一、系统概述与安装 **...
"home-k3s"项目是一个个人实践,展示了如何在家庭环境中设置和维护一个k3s集群,并使用Flux来自动化集群的状态管理。这个存储库可以作为一个学习和参考的例子,帮助那些希望在家中搭建小型Kubernetes集群的爱好者们...
**命名由来**:K3s的名称来源于Kubernetes的简写K8s(10个字母中的8个),K3s则代表了其资源占用约为Kubernetes的一半。 **适用场景**: - **边缘计算**:K3s在边缘计算环境中,可以处理有限的硬件资源和网络条件。...
在这个快速入门指南中,我们将探讨如何在K3s集群上利用Prometheus Operator和kube-prometheus-stack Helm Chart来建立一个全面的监控和报警系统。 首先,Prometheus是一个开源的度量分析和时间序列数据库,广泛用于...
在本文中,我们将深入探讨如何在Raspberry Pi设备上搭建并管理k3s集群,以实现轻量级的Kubernetes环境。k3s是Rancher Labs开发的一个针对边缘计算和IoT场景优化的Kubernetes发行版,它体积小巧、资源占用少,非常...
用于部署由Flux支持的k3s的模板用于部署具有Flux和SOPS支持的k3sup的单个k3s集群的模板。 此处的目的是显示用于部署由Flux支持的k3的模板,用于部署由Flux和SOPS支持的k3sup的单个k3s群集的模板。 这里的目的是展示...
Ansible-k3s-ansible.zip,ansible playbook部署k3s-kubernetes集群通过ansibe使用k3s构建kubernetes集群。,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。
k3s集群 k3s学习集群!
通过将集群配置保存在版本控制系统中,我们可以实现持续集成和交付,提高运维效率。你可以使用如Weave Flux或Argo CD等工具来实践GitOps。 总结,本篇文章详细介绍了如何借助Ansible在Ubuntu 20.04上自动化部署k3s...
将K3s部署与Go Shell集成,可以创建一个跨平台的自动化部署流程。通过编写Go Shell脚本,我们可以自动化处理节点注册、证书生成、配置调整等步骤,确保在任何支持K3s的平台上都能快速、一致地部署Kubernetes集群。 ...
总结,本项目展示了如何在RPi4集群上搭建一个由Flux驱动的GitOps k3s集群,涵盖了从基础环境准备、自动化部署到应用安全管理的全过程。这种方式不仅提高了运维效率,也确保了集群的安全性和稳定性。通过实践,读者...
本文将深入探讨如何构建一个基于k3s的小型k8s @ home集群,并结合GitOps理念,实现集群状态的自动化管理。 首先,k3s是Rancher Labs开发的一款轻量级、官方认证的k8s发行版,它专为资源有限或边缘环境设计。k3s简化...
金蝶K3Cloud与企业微信集成配置,解决金蝶工作流审集成到企业微信端审批,审批消息推送到企业微信端。以及金蝶K3Cloud开通移动单据审批,及配置表单内容
2. **易安装**:k3s提供了一键式安装脚本,用户可以通过简单的命令行指令快速部署一个完整的Kubernetes集群。这对于开发者、测试人员和在小型环境中的运维人员来说,极大地简化了工作流程。 3. **内存优化**:与...
K3s是Rancher Labs开发的一个小巧、高效的Kubernetes版本,设计用于边缘计算和资源有限的环境中。 首先,我们需要了解Kubernetes(简称K8s),它是一个开源的容器编排系统,用于自动化容器化应用的部署、扩展和管理...
K3s是一个微型Kubernetes发行版,由CNCF Sandbox项目孵化而来。K3s具有精简的二进制包,内存消耗小于1G,单一进程包含Kubernetes master、kubelet和containerd等组件。K3s支持SQLite/Mysql/PostgreSQL和etcd等数据库...