Skip to content

Latest commit

 

History

History
201 lines (144 loc) · 6.35 KB

README.md

File metadata and controls

201 lines (144 loc) · 6.35 KB

Native Provider

简体中文 / English

概述

本文介绍了如何在一个能够运行主流操作系统(如 Ubuntu、Debian、Raspbian 等)的虚拟机(VM)中创建和初始化 K3s 集群,以及为已有的 K3s 集群添加节点的操作步骤。除此之外,本文还提供了在 VM 上运行 AutoK3s 的进阶操作指导,如配置私有镜像仓库和启用 UI 组件。

前置要求

虚拟机要求

提供一个运行主流操作系统(如 Ubuntu、Debian、Raspbian 等)的 VM,并为它们注册或设置SSH密钥/密码

设置安全组

VM 实例至少需要应用以下安全组规则:

Rule        Protocol    Port      Source             Description
InBound     TCP         22        ALL                SSH Connect Port
InBound     TCP         6443      K3s agent nodes    Kubernetes API
InBound     TCP         10250     K3s server & agent Kubelet
InBound     TCP         8999      K3s dashboard      (Optional) Required only for Dashboard UI
InBound     UDP         8472      K3s server & agent (Optional) Required only for Flannel VXLAN
InBound     TCP         2379,2380 K3s server nodes   (Optional) Required only for embedded ETCD
OutBound    ALL         ALL       ALL                Allow All

创建集群

请使用autok3s create命令在 VM 实例中创建集群。

创建普通集群

运行以下命令,在 VM 上创建并启动创建一个名为 “myk3s”的集群,并为该集群配置 2 个 master 节点和 2 个 worker 节点。

autok3s -d create \
    --provider native \
    --name myk3s \
    --ssh-key-path <ssh-key-path> \
    --master-ips <master-ip-1,master-ip-2> \
    --worker-ips <worker-ip-1,worker-ip-2>

创建高可用 K3s 集群

创建高可用集群的命令分为两种,取决于您选择使用的是内置的 etcd 还是外部数据库。

嵌入式 etcd(k3s 版本 >= 1.19.1-k3s1)

运行以下命令,在 VM 上创建并启动创建了一个名为“myk3s”的高可用 K3s 集群。

autok3s -d create \
    --provider native \
    --name myk3s \
    --ssh-key-path <ssh-key-path> \
    --master-ips <master-ip-1,master-ip-2,master-ip-3> \
    --cluster

外部数据库

在高可用模式下使用外部数据库,需要满足两个条件:

  • master 节点的数量不小于 1。
  • 需要提供外部数据库的存储路径。

所以在以下的代码示例中,我们通过--master-ips <master-ip-1,master-ip-2>指定 master 节点数量为 2,满足 master 节点的数量不小于 1 这个条件;且通过--datastore "PATH"指定外部数据库的存储路径,提供外部数据库的存储路径。

运行以下命令,在 VM 上创建并启动创建了一个名为“myk3s”的高可用 K3s 集群:

autok3s -d create \
    --provider native \
    --name myk3s \
    --ssh-key-path <ssh-key-path> \
    --master-ips <master-ip-1,master-ip-2> \
    --datastore "mysql://<user>:<password>@tcp(<ip>:<port>)/<db>"

添加 K3s 节点

请使用autok3s join命令为已有集群添加 K3s 节点。

普通集群

运行以下命令,为“myk3s”集群添加 2 个 worker 节点。

autok3s -d join \
    --provider native \
    --name myk3s \
    --ssh-key-path <ssh-key-path> \
    --ip <existing-k3s-server-public-ip> \
    --worker-ips <worker-ip-2,worker-ip-3>

高可用 K3s 集群

添加 K3s 节点的命令分为两种,取决于您选择使用的是内置的 etcd 还是外部数据库。

嵌入式 etcd

运行以下命令,为高可用集群(嵌入式 etcd: k3s 版本 >= 1.19.1-k3s1)“myk3s”集群添加 2 个 master 节点。

autok3s -d join \
    --provider native \
    --name myk3s \
    --ssh-key-path <ssh-key-path> \
    --ip <existing-k3s-server-public-ip> \
    --master-ips <master-ip-2,master-ip-3>

外部数据库

运行以下命令,为高可用集群(外部数据库)“myk3s”集群添加 2 个 master 节点。值得注意的是,添加节点时需要指定参数--datastore,提供外部数据库的存储路径。

autok3s -d join \
    --provider native \
    --name myk3s \
    --ssh-key-path <ssh-key-path> \
    --ip <existing-k3s-server-public-ip> \
    --master-ips <master-ip-2,master-ip-3> \
    --datastore "mysql://<user>:<password>@tcp(<ip>:<port>)/<db>"

Kubectl

群创建完成后,autok3s 会自动合并 kubeconfig 文件。

autok3s kubectl config use-context myk3s
autok3s kubectl <sub-commands> <flags>

在多个集群的场景下,可以通过切换上下文来完成对不同集群的访问。

autok3s kubectl config get-contexts
autok3s kubectl config use-context <context>

其他功能

更多参数请运行autok3s <sub-command> --provider native --help命令。

进阶使用

AutoK3s 集成了一些与当前 provider 有关的高级组件,例如私有镜像仓库和 UI。

配置私有镜像仓库

在运行autok3s createautok3s join时,通过传递--registry /etc/autok3s/registries.yaml参数以使用私有镜像仓库,例如:

autok3s -d create \
    --provider native \
    --name myk3s \
    --ssh-key-path <ssh-key-path> \
    --master-ips <master-ip-1> \
    --worker-ips <worker-ip-1,worker-ip-2> \
    --registry /etc/autok3s/registries.yaml

使用私有镜像仓库的配置请参考以下内容,如果您的私有镜像仓库需要 TLS 认证,autok3s会从本地读取相关的 TLS 文件并自动上传到远程服务器中完成配置,您只需要完善registry.yaml即可。

mirrors:
  docker.io:
    endpoint:
      - "https://mycustomreg.com:5000"
configs:
  "mycustomreg:5000":
    auth:
      username: xxxxxx # this is the registry username
      password: xxxxxx # this is the registry password
    tls:
      cert_file: # path to the cert file used in the registry
      key_file:  # path to the key file used in the registry
      ca_file:   # path to the ca file used in the registry

启用 UI 组件

该参数会启用 kubernetes/dashboard 图形界面。 访问 Token 等设置请参考 此文档

autok3s -d create \
    ... \
    --ui