Autok3s 是一个自动化管理 Kubernetes 集群的工具,针对于多种云平台,例如 Alibaba Cloud、AWS、Azure、DigitalOcean和Google Cloud Platform等。因为使用简单、配置简单,许多开发人员都喜欢使用它来进行 Kubernetes 群集的管理、部署和维护。本文将以autok3s为中心,从git、网络、离线、外部端口等多个方面,对autok3s进行详细的阐述。
一、autok3s git
Autok3s git是autok3s管理k3s集群的开源代码存储库,让用户能够轻松创建和管理k3s集群。如果您有一个开发或测试环境,需要经常创建和删除k3s集群,那么使用autok3s git可以节省您的大量时间。
使用如下代码创建集群:
autok3s create --access-key ${AK} \ --secret-key ${SK} \ --provider ${PROVIDER} \ --name ${K3S_CLUSTER_NAME} \ --region ${REGION} \ --ssh-key ~/.ssh/id_rsa \ --datastore ${DS_OPTIONS} \ --master ${MASTER_OPTIONS} \ --worker ${WORKER_OPTIONS} \ ${EXTRA_OPTIONS}
以上代码是在使用阿里云作为云平台的例子,使用上述代码创建阿里云的k3s集群,输入以上命令时需要修改大括号内用于创建集群的变量,例如${AK}和${SK}代表你的阿里云账户的访问密钥,${REGION}代表创建集群的区域,因为基于k3s,所以使用的是${MASTER_OPTIONS}和${WORKER_OPTIONS}配置。
一旦您的代码库与autok3s相关,您可以使用以下代码快速获取最新的代码并开始使用 autok3s:
git clone https://github.com/rancher-sandbox/autok3s.git cd autok3s make build make install
二、autok3s网络
Autok3s 网络方面更侧重于对于Kubernetes集群网络的管理,包括CNI模式、网络插件等。 如果您想在k3s集群中使用另一个网络插件,可以为 autok3s 指定插件。 在创建集群的同时,将插件选项设置为 calico 就可以使用它。
使用如下代码创建基于 calico 网络插件的集群:
autok3s create --access-key ${AK} \ --secret-key ${SK} \ --provider ${PROVIDER} \ --name ${K3S_CLUSTER_NAME} \ --region ${REGION} \ --ssh-key ~/.ssh/id_rsa \ --datastore ${DS_OPTIONS} \ --master ${MASTER_OPTIONS} \ --worker ${WORKER_OPTIONS} \ --network-plugin calico \ ${EXTRA_OPTIONS}
另外,在使用 autok3s 管理 k3s 集群时,还需要根据业务场景选择不同的 CNI 模式。 CNI 模式是 k3s 集群中网络插件的工作模式,支持 flannel 和 canal 两种模式,用户可根据业务场景自行选择使用。
使用如下语句创建flannel模式的集群:
autok3s create --access-key ${AK} \ --secret-key ${SK} \ --provider ${PROVIDER} \ --name ${K3S_CLUSTER_NAME} \ --region ${REGION} \ --ssh-key ~/.ssh/id_rsa \ --datastore ${DS_OPTIONS} \ --master ${MASTER_OPTIONS} \ --worker ${WORKER_OPTIONS} \ --cni flannel \ ${EXTRA_OPTIONS}
三、autok3s离线部署方案
Autok3s支持在不需要Internet连接的情况下创建k3s群集,这些场景可能包括:在安全环境中一些军队或政府场景,或者在内网的生产场景中。通常情况下,用户需要下载k3s二进制文件、容器镜像和管理平台的二进制文件,并将其打包在一起进行部署。使用autok3s可以简化这个流程。
使用如下语句创建一个离线模式的k3s集群:
autok3s create --provider ${PROVIDER} \ --name ${K3S_CLUSTER_NAME} \ --ssh-key ~/.ssh/id_rsa \ --datastore ${DS_OPTIONS} \ --master ${MASTER_OPTIONS} \ --worker ${WORKER_OPTIONS} \ --offline \ --k3s-server-url /mnt/sfs/k3s \ --k3s-server --k3s-server-init \ ${EXTRA_OPTIONS}
以上命令会创建一个离线模式的k3s集群,该命令需要一个额外的选项,即“ -k3s-server-url”参数,该参数指定了离线模式。当使用“ --offline ”创建集群时,自动安装并部署k3s二进制文件和镜像文件。安装程序会下载这些文件并将其放置在指定的目录中,部署时可以从本地路径中加载相关内容。
四、autok3s创建外部端口
autok3s还允许您使用外部端口向Internet开放服务,进而为应用程序提供公共访问。 此功能包括自动获取外部 IP 地址,配置 DNS 名称解析,并在架构中创建相应的负载平衡器。
使用如下语句,让您的应用提供 80 端口的公开服务:
autok3s create --provider ${PROVIDER} \ --name ${K3S_CLUSTER_NAME} \ --ssh-key ~/.ssh/id_rsa \ --datastore ${DS_OPTIONS} \ --master ${MASTER_OPTIONS} \ --worker ${WORKER_OPTIONS} \ --port 80 \ ${EXTRA_OPTIONS}
其中,--port 参数定义了集群将曝露出去的端口号,该端口将映射到群集中的负载平衡器,并公开给外部用户。自动分配的负载均衡器名称将在创建集群后显示,可以在运行 kubectl get svc 时查看所有负载平衡器名字。
结语
综上所述,本文通过从git、网络、离线、外部端口等方面,对 Autok3s 进行了详细的阐述。Autok3s 作为一个在Kubernetes社区中备受好评的自动集群部署工具,可以方便有序地进行k3s 集群的安装部署、配置管理和系统自动化。在实际应用中, Autok3s 已经被广泛应用于各种场景的k3s 集群,希望本文能够帮助您更好地使用它吧。