云计算
关于k3s
k3s是由rancher labs发布的一个轻量级kubernetes发行版,这款产品专为在资源有限的环境中运行kubernetes的研发和运维人员设计。
它是经过认证的kubernetes发行版,其最低的系统要求为:
系统内核版本:linux 3.10
每个server最低ram要求:512 mb
每个节点ram最低要求:75mb
磁盘空间最低要求:200 mb
支持的硬件架构:x86_64、 armv7、 arm64
这些低配置的要求使得k3s非常适用于iot相关的场景。
在gitlab中创建项目
在安装k3s之前,我们先在gitlab上创建一个新的项目,称为api。
创建完成之后,我们点击侧边菜单栏里的operations,并在下级菜单中选择kubernetes。
我们现在有两个选项:
在gke上创建一个新的kubernetes集群
导入现有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.yamlapiversion:?v1clusters:-?cluster:certificate-authority-data:?ls0tl...tcg==server:?https://localhost:6443name:?defaultcontexts:-?context:cluster:?defaultuser:?defaultname:?defaultcurrent-context:?defaultkind:?configpreferences:?{}users:-?name:?defaultuser:?48f4b...4b4e7?admin本地kubectl将自动使用此配置。
$?kubectl?get?nodesnamestatus?rolesage?versionnode1?readymaster?3mv1.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集群所需的所有信息。
集群名字:k3s
api server的url:在配置文件中,api server指定为:https://localhost:6443 。为了从外部访问,我们需要提供node1 外部的ip地址。
集群的ca证书:要向gitlab提供集群ca证书,我们需要解码配置中指定的那个文件(就像它在base 64中一样)。
$?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:?v1kind:?serviceaccountmetadata:name:?gitlab-adminnamespace:?kube-system---apiversion:?rbac.authorization.k8s.io/v1beta1kind:?clusterrolebindingmetadata:name:?gitlab-adminroleref:apigroup:?rbac.authorization.k8s.iokind:?clusterrolename:?cluster-adminsubjects:-?kind:?serviceaccountname:?gitlab-adminnamespace:?kube-systemeof当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?tillernamespace?nameready?up-to-date?available?agegitlab-managed-apps?tiller-deploy?1/1?11?67s集群现在已经可以使用了。除此之外,gitlab的web界面允许一键安装其他组件:
ingress controller,暴露集群中运行的服务
cert-manager,使用let\\\’s encrypt管理tls证书
prometheus,监控运行在集群中 的应用程序
knative,部署serverless工作负载
总?结
在本文中,我们了解如何创建一个k3s集群并且将其集成到一个gitlab项目中。当然,任何kubernetes集群都可以使用相同的过程。
我们现在可以添加各种资源到项目中:
源代码
dockerfile,指定如何从代码中创建docker镜像
kubernetes资源,如部署、服务……
.gitlab-ci.yaml文件,定义ci流水线以及如何部署应用程序并且针对相关kubernetes集群进行测试
撤销新备案接入-备案平台网站运行环境问题-虚拟主机/数据库问题用ipv6可以免流量吗个体能制作网站的必备条件怎么注册域名 购买域名后如何建立网站io域名 购买注册的步骤流程是怎么样的?轻量云服务器哪个好为什么要关注域名安全?新手应该注意哪些方面?