diff --git a/README.md b/README.md index f111c59..bbdf179 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ -- 命令行工具 [easzctl介绍](docs/setup/easzctl_cmd.md) +- 命令行工具 [ezctl介绍](docs/setup/ezctl.md) - 公有云自建集群 [部署指南](docs/setup/kubeasz_on_public_cloud.md) ## 使用指南 diff --git a/docs/guide/chrony.md b/docs/guide/chrony.md index fba79ae..a9fd14a 100644 --- a/docs/guide/chrony.md +++ b/docs/guide/chrony.md @@ -8,36 +8,15 @@ 项目中选定一个节点(`groups.chrony[0]`)作为集群内部其他节点的时间同步源,而这个节点本身从公网源同步;当然如果整个集群都无法访问公网,那么请手动校准这个节点的时间后,仍旧可以作为内部集群的时间源服务器。 -- 配置 chrony server, 在`/etc/chrony.conf` 配置以下几项,其他项默认值即可 +- 配置 chrony server,详见roles/chrony/templates/server-*.conf.j2 -``` bash -# 1. 配置时间源,国内可以增加阿里的时间源 ntp1.aliyun.com -server {{ ntp_server }} iburst - -# 2. 配置允许同步的客户端网段 -allow {{ local_network }} - -# 3. 配置离线也能作为源服务器 -local stratum 10 -``` - -- 配置 chrony client - -``` bash -# 1. 清除所有其他时间源,只配置一个本地`groups.chrony[0]`节点作为源 -server {{ groups.chrony[0] }} iburst - -# 2. 其他所有项可以默认配置 -``` +- 配置 chrony client,详见roles/chrony/templates/client-*.conf.j2 ## `kubeasz` 集成安装 -- 修改 ansible hosts 文件,在 `chrony`组中加入选中的节点ip -- [可选] 修改 roles/chrony/defaults/main.yml 中的变量定义 - -对于新集群或者新节点,`chrony` 的安装配置已经集成到脚本中;对于已运行中的集群请执行如下命令进行安装: - -`ansible-playbook /etc/ansible/roles/chrony/chrony.yml ` +- 修改 clusters/${cluster_name}/hosts 文件,在 `chrony`组中加入选中的节点ip +- [可选] 修改 clusters/${cluster_name}/config.yml 中的相关配置 +-执行命令安装 `ezctl setup ${cluster_name} 01` ## 验证配置 @@ -107,7 +86,7 @@ Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev chrony 服务启动后,chrony server 会与配置的公网参考时间服务器进行同步;server 同步完成后,chrony client 会与 server 进行时间同步;一般来说整个集群达到时间同步需要几十分钟。可以用如下命令检查,初始时 **NTP synchronized: no**,同步完成后 **NTP synchronized: yes** ``` bash -$ ansible all -m shell -a 'timedatectl' +$ ansible -i clusters/${cluster_name}/hosts all -m shell -a 'timedatectl' 192.168.1.1 | SUCCESS | rc=0 >> Local time: Sat 2019-01-26 11:51:51 HKT Universal time: Sat 2019-01-26 03:51:51 UTC diff --git a/docs/guide/containerd.md b/docs/guide/containerd.md index 44d73ef..36a9da0 100644 --- a/docs/guide/containerd.md +++ b/docs/guide/containerd.md @@ -11,4 +11,4 @@ ## kubeasz 集成安装 containerd - 按照 example 例子,在 ansible hosts 设置全局变量 `CONTAINER_RUNTIME="containerd"` -- 执行 `ansible-playbook 90.setup.yml` 或 `easzctl setup` 即可 +- 执行 `ansible-playbook 90.setup.yml` 或 `ezctl setup` 即可 diff --git a/docs/guide/dashboard.md b/docs/guide/dashboard.md index 6143567..ea296e0 100644 --- a/docs/guide/dashboard.md +++ b/docs/guide/dashboard.md @@ -55,7 +55,7 @@ kubectl logs kubernetes-dashboard-7c74685c48-9qdpn -n kube-system 新版 dashboard可以有多层访问控制,首先与旧版一样可以使用apiserver 方式登录控制: - 第一步通过api-server本身安全认证流程,与之前[1.6.3版本](dashboard.1.6.3.md)相同,这里不再赘述 - - 如需(用户名/密码)认证,kubeasz 1.0.0以后使用 `easzctl basic-auth -s` 开启 + - 如需(用户名/密码)认证,kubeasz 1.0.0以后使用 `ezctl basic-auth -s` 开启 - 第二步通过dashboard自带的登录流程,使用`Kubeconfig` `Token`等方式登录 **注意:** 如果集群已启用 ingress tls的话,可以[配置ingress规则访问dashboard](ingress-tls.md#%E9%85%8D%E7%BD%AE-dashboard-ingress) diff --git a/docs/guide/efk.md b/docs/guide/efk.md index 72a4238..28dde36 100644 --- a/docs/guide/efk.md +++ b/docs/guide/efk.md @@ -43,7 +43,7 @@ $ kubectl logs -n kube-system kibana-logging-d5cffd7c6-9lz2p -f 推荐使用`kube-apiserver`方式访问(可以使用basic-auth、证书和rbac等方式进行认证授权),获取访问 URL -- 开启 apiserver basic-auth(用户名/密码认证):`easzctl basic-auth -s -u admin -p test1234` +- 开启 apiserver basic-auth(用户名/密码认证):`ezctl basic-auth -s -u admin -p test1234` ``` bash $ kubectl cluster-info | grep Kibana diff --git a/docs/mixes/branch.md b/docs/mixes/branch.md index a7bd84e..3867fb2 100644 --- a/docs/mixes/branch.md +++ b/docs/mixes/branch.md @@ -1,10 +1,11 @@ # 项目分支说明 -为减小维护压力,避免产生混淆,精简项目分支为:`master`, `dev2`, `dev1`, `dev0`, `closed`; 分别对应发布版本如下: +为减小维护压力,避免产生混淆,精简项目分支为:`master`, `dev3`, `dev2`, `dev1`, `dev0`, `closed`; 分别对应发布版本如下: - master 最新版本稳定分支(目前对应dev2) -- dev2 对应 kubeasz 2.x 版本的开发分支 -- dev1 对应 kubeasz 1.x 版本的开发分支 +- dev2 对应 kubeasz 3.x 版本的开发分支 +- dev2 对应 kubeasz 2.x 版本的开发分支(仅bugfix) +- dev1 对应 kubeasz 1.x 版本的开发分支(已停止更新) - dev0 对应 kubeasz 0.x 版本的开发分支(已停止更新) - closed 对应更老的版本分支(仅留档保存) diff --git a/docs/op/op-etcd.md b/docs/op/op-etcd.md index 4d71f77..c581a17 100644 --- a/docs/op/op-etcd.md +++ b/docs/op/op-etcd.md @@ -22,8 +22,8 @@ $ ETCDCTL_API=3 etcdctl --write-out=table snapshot status backup.db 首先确认配置 ssh 免密码登录,然后执行 (假设待操作节点为 192.168.1.11): -- 增加 etcd 节点:`$ easzctl add-etcd 192.168.1.11` (注意:增加 etcd 还需要根据提示输入集群内唯一的 NODE_NAME) -- 删除 etcd 节点:`$ easzctl del-etcd 192.168.1.11` +- 增加 etcd 节点:`$ ezctl add-etcd 192.168.1.11` (注意:增加 etcd 还需要根据提示输入集群内唯一的 NODE_NAME) +- 删除 etcd 节点:`$ ezctl del-etcd 192.168.1.11` ### 验证 etcd 集群 diff --git a/docs/op/op-master.md b/docs/op/op-master.md index 3100641..dc7780e 100644 --- a/docs/op/op-master.md +++ b/docs/op/op-master.md @@ -17,7 +17,7 @@ 首先配置 ssh 免密码登录新增节点,然后执行 (假设待增加节点为 192.168.1.11): ``` bash -$ easzctl add-master 192.168.1.11 +$ ezctl add-master 192.168.1.11 ``` ### 验证 @@ -57,7 +57,7 @@ NAME STATUS ROLES AGE VERSION ### 操作步骤 ``` bash -$ easzctl del-master 192.168.1.11 # 假设待删除节点 192.168.1.11 +$ ezctl del-master 192.168.1.11 # 假设待删除节点 192.168.1.11 ``` ### 验证 diff --git a/docs/op/op-node.md b/docs/op/op-node.md index 72a1dc0..39da882 100644 --- a/docs/op/op-node.md +++ b/docs/op/op-node.md @@ -19,7 +19,7 @@ 首先配置 ssh 免密码登录新增节点,然后执行 (假设待增加节点为 192.168.1.11): ``` bash -$ easzctl add-node 192.168.1.11 +$ ezctl add-node 192.168.1.11 ``` ### 验证 @@ -36,7 +36,7 @@ $ kubectl get pod -n kube-system ## 2.增加非标准ssh端口节点 -目前 easzctl 暂不支持自动添加非标准 ssh 端口的节点,可以手动操作如下: +目前 ezctl 暂不支持自动添加非标准 ssh 端口的节点,可以手动操作如下: - 假设待添加节点192.168.2.1,ssh 端口 10022;配置免密登录 ssh-copy-id -p 10022 192.168.2.1,按提示输入密码 - 在 /etc/ansible/hosts文件 [kube-node] 组下添加一行: @@ -56,7 +56,7 @@ $ kubectl get pod -n kube-system ### 操作步骤 ``` bash -$ easzctl del-node 192.168.1.11 # 假设待删除节点为 192.168.1.11 +$ ezctl del-node 192.168.1.11 # 假设待删除节点为 192.168.1.11 ``` ### 验证 diff --git a/docs/op/upgrade.md b/docs/op/upgrade.md index 8c9e562..be75a1a 100644 --- a/docs/op/upgrade.md +++ b/docs/op/upgrade.md @@ -31,10 +31,10 @@ $ ETCDCTL_API=3 etcdctl --write-out=table snapshot status backup.db - kube-scheduler - 在ansible控制端执行`ansible-playbook -t upgrade_k8s 22.upgrade.yml`即可完成k8s 升级,不会中断业务应用 -如果使用 easzctl 命令行,可按如下执行: +如果使用 ezctl 命令行,可按如下执行: -- 首先确认待升级的集群(如果有多集群的话) `easzctl checkout ` -- 执行升级 `easzctl upgrade` +- 首先确认待升级的集群(如果有多集群的话) `ezctl checkout ` +- 执行升级 `ezctl upgrade` ### 其他升级说明 diff --git a/docs/setup/00-planning_and_overall_intro.md b/docs/setup/00-planning_and_overall_intro.md index ca722a8..09e8640 100644 --- a/docs/setup/00-planning_and_overall_intro.md +++ b/docs/setup/00-planning_and_overall_intro.md @@ -13,19 +13,19 @@ |角色|数量|描述| |:-|:-|:-| -|管理节点|1|运行ansible/easzctl脚本,一般复用master节点| -|etcd节点|3|注意etcd集群需要1,3,5,7...奇数个节点,一般复用master节点| +|部署节点|1|运行ansible/ezctl命令,建议独立节点| +|etcd节点|3|注意etcd集群需要1,3,5,...奇数个节点,一般复用master节点| |master节点|2|高可用集群至少2个master节点| |node节点|3|运行应用负载的节点,可根据需要提升机器配置/增加节点数| 在 kubeasz 2x 版本,多节点高可用集群安装可以使用2种方式 - 1.先部署单节点集群 [AllinOne部署](quickStart.md),然后通过 [节点添加](../op/op-index.md) 扩容成高可用集群 -- 2.按照如下步骤先规划准备,直接安装多节点高可用集群 +- 2.按照如下步骤先规划准备,在clusters/${cluster_name}/hosts 配置节点信息后,直接安装多节点高可用集群 ## 部署步骤 -按照`example/hosts.multi-node`示例的节点配置,准备4台虚机,搭建一个多主高可用集群。 +以下示例创建一个4节点的多主高可用集群,文档中命令默认都需要root权限运行。 ### 1.基础系统配置 @@ -38,7 +38,6 @@ Ubuntu 16.04 请执行以下脚本: ``` bash -# 文档中脚本默认均以root用户执行 apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y # 安装python2 apt-get install python2.7 @@ -48,7 +47,6 @@ ln -s /usr/bin/python2.7 /usr/bin/python CentOS 7 请执行以下脚本: ``` bash -# 文档中脚本默认均以root用户执行 yum update # 安装python yum install python -y @@ -79,42 +77,47 @@ ssh-keygen -t rsa -b 2048 -N '' -f ~/.ssh/id_rsa ssh-copy-id $IPs #$IPs为所有节点地址包括自身,按照提示输入yes 和root密码 ``` -### 4.在ansible控制端编排k8s安装 +### 4.在部署节点编排k8s安装 -- 4.0 下载项目源码 -- 4.1 下载二进制文件 -- 4.2 下载离线docker镜像 - -推荐使用 easzup 脚本下载 4.0/4.1/4.2 所需文件;运行成功后,所有文件(kubeasz代码、二进制、离线镜像)均已整理好放入目录`/etc/ansible` +- 4.1 下载项目源码、二进制及离线镜像 ``` bash -# 下载工具脚本easzup,举例使用kubeasz版本2.0.2 -export release=2.0.2 -curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/easzup -chmod +x ./easzup +# 下载工具脚本ezdown,举例使用kubeasz版本3.0.0 +export release=3.0.0 +curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown +chmod +x ./ezdown # 使用工具脚本下载 -./easzup -D +./ezdown -D ``` -- 4.3 配置集群参数 - - 4.3.1 必要配置:`cd /etc/ansible && cp example/hosts.multi-node hosts`, 然后实际情况修改此hosts文件 - - 4.3.2 可选配置,初次使用可以不做修改,详见[配置指南](config_guide.md) - - 4.3.3 验证ansible 安装:`ansible all -m ping` 正常能看到节点返回 SUCCESS +上述脚本运行成功后,所有文件(kubeasz代码、二进制、离线镜像)均已整理好放入目录`/etc/kubeasz` -- 4.4 开始安装 +- 4.2 创建集群配置实例 + +``` bash +ezctl new k8s-01 +2021-01-19 10:48:23 DEBUG generate custom cluster files in /etc/kubeasz/clusters/k8s-01 +2021-01-19 10:48:23 DEBUG set version of common plugins +2021-01-19 10:48:23 DEBUG disable registry mirrors +2021-01-19 10:48:23 DEBUG cluster k8s-01: files successfully created. +2021-01-19 10:48:23 INFO next steps 1: to config '/etc/kubeasz/clusters/k8s-01/hosts' +2021-01-19 10:48:23 INFO next steps 2: to config '/etc/kubeasz/clusters/k8s-01/config.yml' +``` +然后根据提示配置'/etc/kubeasz/clusters/k8s-01/hosts' 和 '/etc/kubeasz/clusters/k8s-01/config.yml':根据前面节点规划修改hosts 文件和其他集群层面的主要配置选项;其他集群组件等配置项可以在config.yml 文件中修改。 + +- 4.3 开始安装 如果你对集群安装流程不熟悉,请阅读项目首页 **安装步骤** 讲解后分步安装,并对 **每步都进行验证** ``` bash -# 分步安装 -ansible-playbook 01.prepare.yml -ansible-playbook 02.etcd.yml -ansible-playbook 03.docker.yml -ansible-playbook 04.kube-master.yml -ansible-playbook 05.kube-node.yml -ansible-playbook 06.network.yml -ansible-playbook 07.cluster-addon.yml -# 一步安装 -#ansible-playbook 90.setup.yml +# 一键安装 +ezctl setup k8s-01 all + +# 或者分步安装,具体使用 ezctl help setup 查看分步安装帮助信息 +# ezctl setup k8s-01 01 +# ezctl setup k8s-01 02 +# ezctl setup k8s-01 03 +# ezctl setup k8s-01 04 +... ``` + [可选]对集群所有节点进行操作系统层面的安全加固 `ansible-playbook roles/os-harden/os-harden.yml`,详情请参考[os-harden项目](https://github.com/dev-sec/ansible-os-hardening) diff --git a/docs/setup/docker_kubeasz.md b/docs/setup/docker_kubeasz.md deleted file mode 100644 index 7afe54a..0000000 --- a/docs/setup/docker_kubeasz.md +++ /dev/null @@ -1,57 +0,0 @@ -# 容器化运行 kubeasz - -## easzup 工具介绍 - -初始化工具 tools/easzup 主要用于: - -- 下载 kubeasz 项目代码/k8s 二进制文件/其他所需二进制文件/离线docker镜像等 -- 【可选】容器化运行 kubeasz - -详见脚本内容,使用命令`./easzup` 查看帮助信息 - -### 容器化运行 kubeasz - -kubeasz 容器启动脚本详见文件 tools/easzup 中函数`start_kubeasz_docker` - -``` bash - docker run --detach \ - --name kubeasz \ - --restart always \ - --env HOST_IP="$host_ip" \ - --volume /etc/ansible:/etc/ansible \ - --volume /root/.kube:/root/.kube \ - --volume /root/.ssh/id_rsa:/root/.ssh/id_rsa:ro \ - --volume /root/.ssh/id_rsa.pub:/root/.ssh/id_rsa.pub:ro \ - --volume /root/.ssh/known_hosts:/root/.ssh/known_hosts:ro \ - easzlab/kubeasz:${KUBEASZ_VER} -``` - -- --env HOST_IP="$host_ip" 传递这个参数是为了快速在本机安装aio集群 -- --volume /etc/ansible:/etc/ansible 挂载本地目录,这样可以在宿主机上修改集群配置,然后在容器内执行 ansible 安装 -- --volume /root/.kube:/root/.kube 容器内与主机共享 kubeconfig,这样都可以执行 kubectl 命令 -- --volume /root/.ssh/id_rsa:/root/.ssh/id_rsa:ro 等三个 volume 挂载保证:如果宿主机配置了免密码登录所有集群节点,那么容器内也可以免密码登录所有节点 - -## 容器化安装集群 - -项目[快速指南](quickStart.md),就是利用 kubeasz 容器快速安装单节点k8s集群的例子。 - -## 验证 - -使用容器化安装成功后,可以在 **容器内** 或者 **宿主机** 上执行 kubectl 命令验证集群状态。 - -## 清理 - -登录管理节点,按照如下步骤清理(清理后可以重新安装测试) - -- 清理集群 `docker exec -it kubeasz easzctl destroy` -- 清理运行的容器 `./easzup -C` -- 清理容器镜像 `docker system prune -a` -- 停止docker服务 `systemctl stop docker` -- 删除docker文件 -``` - umount /var/run/docker/netns/default - umount /var/lib/docker/overlay - rm -rf /var/lib/docker /var/run/docker -``` - -上述清理脚本执行成功后,建议重启节点,以确保清理残留的虚拟网卡、路由等信息。 diff --git a/docs/setup/easzctl_cmd.md b/docs/setup/easzctl_cmd.md deleted file mode 100644 index ece91db..0000000 --- a/docs/setup/easzctl_cmd.md +++ /dev/null @@ -1,61 +0,0 @@ -# easzctl 命令行介绍 - -## 为什么使用 easzctl - -作为 kubeasz 项目的推荐命令行脚本,easzctl 十分轻量、简单;(后续会不断完善补充) - -- 命令集 1:集群层面操作 - - 切换/创建集群 context - - 删除当前集群 - - 显示所有集群 - - 创建集群 - - 创建单机集群(类似 minikube) -- 命令集 2:集群内部操作 - - 增加工作节点 - - 增加主节点 - - 增加 etcd 节点 - - 删除 etcd 节点 - - 删除任意节点 - - 升级集群 -- 命令集3:额外操作 - - 开启/关闭基础认证 - -集群 context 由 ansible hosts 配置、roles 配置等组成,用以区分不同的 k8s 集群,从而实现多集群的创建和管理;当然 easzctl 命令行不是必须的,你仍旧可以使用之前熟悉的方式安装/管理集群。 - -## 典型 easzctl 创建管理的集群拓扑如下 - -``` -+----------------+ +-----------------+ -|easzctl 1.1.1.1 | |cluster-aio: | -+--+---+---+-----+ | | - | | | |master 4.4.4.4 | - | | +-------------------->+etcd 4.4.4.4 | - | | |node 4.4.4.4 | - | +--------------+ +-----------------+ - | | - v v -+--+------------+ +---+----------------------------+ -| cluster-1: | | cluster-2: | -| | | | -| master 2.2.2.1| | master 3.3.3.1/3.3.3.2 | -| etcd 2.2.2.2| | etcd 3.3.3.1/3.3.3.2/3.3.3.3 | -| node 2.2.2.3| | node 3.3.3.4/3.3.3.5/3.3.3.6 | -+---------------+ +--------------------------------+ -``` - -## 使用 easzctl 举例 - -- 随时运行 `easzctl help` 获取命令行提示信息 - -- 1.创建 context:准备集群名称(例如:test-cluster1),运行 `easzctl checkout test-cluster1` - - 如果 context: test-cluster1 不存在,那么会根据 default 配置创建它;如果存在则切换当前 context 为 test-cluster1 - -- 2.准备 context 以后,根据你的需要配置 ansible hosts 文件和其他配置,然后运行 `easzctl setup` - -- 3.安装成功后,运行 `easzctl list` 显示当前所有集群信息 - -- 4.重复步骤 1/2 可以创建多个集群 - -- 5.切换到某个集群 `easzctl checkout xxxx`,然后执行增加/删除节点操作 - -That's it! 赶紧动手测试吧,欢迎通过 Issues 和 PRs 反馈您的意见和建议! diff --git a/docs/setup/ezctl.md b/docs/setup/ezctl.md new file mode 100644 index 0000000..1107fdc --- /dev/null +++ b/docs/setup/ezctl.md @@ -0,0 +1,115 @@ +# ezctl 命令行介绍 + +## 为什么使用 ezctl + +kubeasz 项目使用ezctl 方便地创建和管理多个k8s 集群,ezctl 使用shell 脚本封装ansible-playbook 执行命令,它十分轻量、简单和易于扩展。 + +### 使用帮助 + +随时运行 ezctl 获取命令行提示信息,如下 + +``` +Usage: ezctl COMMAND [args] +------------------------------------------------------------------------------------- +Cluster setups: + list to list all of the managed clusters + checkout to switch default kubeconfig of the cluster + new to start a new k8s deploy with name 'cluster' + setup to setup a cluster, also supporting a step-by-step way + start to start all of the k8s services stopped by 'ezctl stop' + stop to stop all of the k8s services temporarily + upgrade to upgrade the k8s cluster + destroy to destroy the k8s cluster + backup to backup the cluster state (etcd snapshot) + restore to restore the cluster state from backups + start-aio to quickly setup an all-in-one cluster with 'default' settings + +Cluster ops: + add-etcd to add a etcd-node to the etcd cluster + add-master to add a master node to the k8s cluster + add-node to add a work node to the k8s cluster + del-etcd to delete a etcd-node from the etcd cluster + del-master to delete a master node from the k8s cluster + del-node to delete a work node from the k8s cluster + +Extra operation: + kcfg-adm to manage client kubeconfig of the k8s cluster + +Use "ezctl help " for more information about a given command. +``` + +- 命令集 1:集群安装相关操作 + - 显示当前所有管理的集群 + - 切换默认集群 + - 创建新集群配置 + - 安装新集群 + - 启动临时停止的集群 + - 临时停止某个集群(包括集群内运行的pod) + - 升级集群k8s组件版本 + - 删除集群 + - 备份集群(仅etcd数据,不包括pv数据和业务应用数据) + - 从备份中恢复集群 + - 创建单机集群(类似 minikube) +- 命令集 2:集群节点操作 + - 增加 etcd 节点 + - 增加主节点 + - 增加工作节点 + - 删除 etcd 节点 + - 删除主节点 + - 删除工作节点 +- 命令集3:额外操作 + - 管理客户端kubeconfig + +#### 举例创建、安装新集群流程 + +- 1.首先创建集群配置实例 + +``` bash +~# ezctl new k8s-01 +2021-01-19 10:48:23 DEBUG generate custom cluster files in /etc/kubeasz/clusters/k8s-01 +2021-01-19 10:48:23 DEBUG set version of common plugins +2021-01-19 10:48:23 DEBUG disable registry mirrors +2021-01-19 10:48:23 DEBUG cluster k8s-01: files successfully created. +2021-01-19 10:48:23 INFO next steps 1: to config '/etc/kubeasz/clusters/k8s-01/hosts' +2021-01-19 10:48:23 INFO next steps 2: to config '/etc/kubeasz/clusters/k8s-01/config.yml' +``` +然后根据提示配置'/etc/kubeasz/clusters/k8s-01/hosts' 和 '/etc/kubeasz/clusters/k8s-01/config.yml';为方便测试我们在hosts里面设置单节点集群(etcd/kube-master/kube-node配置同一个节点,注意节点需先设置ssh免密码登陆), config.yml 使用默认配置即可。 + +- 2.然后开始安装集群 + +``` bash +# 一键安装 +ezctl setup k8s-01 all + +# 或者分步安装,具体使用 ezctl help setup 查看分步安装帮助信息 +# ezctl setup k8s-01 01 +# ezctl setup k8s-01 02 +# ezctl setup k8s-01 03 +# ezctl setup k8s-01 04 +... +``` + +- 3.重复步骤1,2可以创建、管理多个k8s集群(建议ezctl使用独立的部署节点) + +ezctl 创建管理的多集群拓扑如下 + +``` ++----------------+ +-----------------+ +|ezctl 1.1.1.1 | |cluster-aio: | ++--+---+---+-----+ | | + | | | |master 4.4.4.4 | + | | +-------------------->+etcd 4.4.4.4 | + | | |node 4.4.4.4 | + | +--------------+ +-----------------+ + | | + v v ++--+------------+ +---+----------------------------+ +| cluster-1: | | cluster-2: | +| | | | +| master 2.2.2.1| | master 3.3.3.1/3.3.3.2 | +| etcd 2.2.2.2| | etcd 3.3.3.1/3.3.3.2/3.3.3.3 | +| node 2.2.2.3| | node 3.3.3.4/3.3.3.5/3.3.3.6 | ++---------------+ +--------------------------------+ +``` + +That's it! 赶紧动手测试吧,欢迎通过 Issues 和 PRs 反馈您的意见和建议! diff --git a/docs/setup/kubeasz_on_public_cloud.md b/docs/setup/kubeasz_on_public_cloud.md index ce1f1fa..888c9f9 100644 --- a/docs/setup/kubeasz_on_public_cloud.md +++ b/docs/setup/kubeasz_on_public_cloud.md @@ -8,11 +8,11 @@ ### 网络组件 -一般公有云对网络限制较多,跨节点 pod 通讯需要使用 OVERLAY 添加报头;比如可以使用如下:(kubeasz 项目中已默认配置) +一般公有云对网络限制较多,跨节点 pod 通讯需要使用 OVERLAY 添加报头;默认配置详见example/config.yml -- flannel 使用 vxlan 模式:`roles/flannel/defaults/main.yml` -- calico 开启 ipinip:`roles/calico/defaults/main.yml` -- kube-router 开启 ipinip:`roles/kube-router/defaults/main.yml` +- flannel 使用 vxlan 模式:`FLANNEL_BACKEND: "vxlan"` +- calico 开启 ipinip:`CALICO_IPV4POOL_IPIP: "Always"` +- kube-router 开启 ipinip:`OVERLAY_TYPE: "full"` ### 节点公网访问 @@ -38,4 +38,3 @@ 处理好以上讨论的常见问题后,在公有云上使用 kubeasz 安装集群与自有环境没有差异。 - 使用 kubeasz 2x 版本安装单节点、单主多节点、多主多节点 k8s 集群,云上云下的预期安装体验完全一致 - diff --git a/docs/setup/network-plugin/kube-ovn.md b/docs/setup/network-plugin/kube-ovn.md index e925c24..ce6cd74 100644 --- a/docs/setup/network-plugin/kube-ovn.md +++ b/docs/setup/network-plugin/kube-ovn.md @@ -23,7 +23,7 @@ kube-ovn 提供了针对企业应用场景下容器网络实用功能,并为 kube-ovn 的安装十分简单,详见项目的安装文档;基于 kubeasz,以下两步将安装一个集成了 kube-ovn 网络的 k8s 集群; - 在 ansible hosts 中设置变量 `CLUSTER_NETWORK="kube-ovn"` -- 执行安装 `ansible-playbook 90.setup.yml` 或者 `easzctl setup` +- 执行安装 `ansible-playbook 90.setup.yml` 或者 `ezctl setup` kubeasz 项目为`kube-ovn`网络生成的 ansible role 如下: diff --git a/docs/setup/offline_install.md b/docs/setup/offline_install.md index 9af7823..05a1140 100644 --- a/docs/setup/offline_install.md +++ b/docs/setup/offline_install.md @@ -6,70 +6,67 @@ kubeasz 2.0.1 开始支持**完全离线安装**,目前已测试 `Ubuntu1604|1 在一台能够访问互联网的服务器上执行: -- 下载工具脚本easzup,举例使用kubeasz版本2.2.1 +- 下载工具脚本ezdown,举例使用kubeasz版本3.0.0 ``` bash -export release=2.2.1 -curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/easzup -chmod +x ./easzup +export release=3.0.0 +curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown +chmod +x ./ezdown ``` - 使用工具脚本下载 -默认下载最新推荐k8s/docker等版本,使用命令`./easzup` 查看工具脚本的帮助信息 +默认下载最新推荐k8s/docker等版本(更多关于ezdown的参数,运行./ezdown 查看) ``` bash -# 举例使用 k8s 版本 v1.18.2,docker 19.03.5 -./easzup -D -d 19.03.5 -k v1.18.2 -# 下载离线系统软件包 -./easzup -P +./ezdown -D ``` -执行成功后,所有文件均已整理好放入目录`/etc/ansible`,只要把该目录整体复制到任何离线的机器上,即可开始安装集群,离线文件包括: +- 可选下载离线系统包 (适用于无法使用yum/apt仓库情形) -- `/etc/ansible` 包含 kubeasz 版本为 ${release} 的发布代码 -- `/etc/ansible/bin` 包含 k8s/etcd/docker/cni 等二进制文件 -- `/etc/ansible/down` 包含集群安装时需要的离线容器镜像 -- `/etc/ansible/down/packages` 包含集群安装时需要的系统基础软件 +``` bash +./ezdown -P +``` + +上述脚本运行成功后,所有文件(kubeasz代码、二进制、离线镜像)均已整理好放入目录`/etc/kubeasz` + +- `/etc/kubeasz` 包含 kubeasz 版本为 ${release} 的发布代码 +- `/etc/kubeasz/bin` 包含 k8s/etcd/docker/cni 等二进制文件 +- `/etc/kubeasz/down` 包含集群安装时需要的离线容器镜像 +- `/etc/kubeasz/down/packages` 包含集群安装时需要的系统基础软件 离线文件不包括: -- 管理端 ansible 安装,但可以使用 kubeasz 容器运行 ansible 脚本 +- 管理端 ansible 安装,但可以使用容器化方式运行 kubeasz 安装命令 - 其他更多 kubernetes 插件镜像 ## 离线安装 -上述下载完成后,把`/etc/ansible`整个目录复制到目标离线服务器相同目录,然后在离线服务器上运行: +上述下载完成后,把`/etc/kubeasz`整个目录复制到目标离线服务器相同目录,然后在离线服务器上运行: - 离线安装 docker,检查本地文件,正常会提示所有文件已经下载完成 ``` -./easzup -D +./ezdown -D ``` - 启动 kubeasz 容器 ``` -./easzup -S +./ezdown -S ``` - 设置参数允许离线安装 ``` -sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/chrony/defaults/main.yml -sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/ex-lb/defaults/main.yml -sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/kube-node/defaults/main.yml -sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/prepare/defaults/main.yml +sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/kubeasz/example/config.yml ``` - 举例安装单节点集群,参考 https://github.com/easzlab/kubeasz/blob/master/docs/setup/quickStart.md ``` -docker exec -it kubeasz easzctl start-aio +docker exec -it kubeasz ezctl start-aio ``` -- 多节点集群,进入kubeasz 容器内 `docker exec -it kubeasz bash`,参考https://github.com/easzlab/kubeasz/blob/master/docs/setup/00-planning_and_overall_intro.md 进行集群规划和设置后安装 +- 多节点集群,进入kubeasz 容器内 `docker exec -it kubeasz bash`,参考https://github.com/easzlab/kubeasz/blob/master/docs/setup/00-planning_and_overall_intro.md 进行集群规划和设置后使用./ezctl 命令安装 -``` -#ansible-playbook 90.setup.yml -``` diff --git a/docs/setup/quickStart.md b/docs/setup/quickStart.md index 5803e88..059fcf9 100644 --- a/docs/setup/quickStart.md +++ b/docs/setup/quickStart.md @@ -2,16 +2,6 @@ 以下为快速体验k8s集群的测试、开发环境--单节点部署(aio),国内环境下比官方的minikube方便、简单很多。 -### TL;DR; - -先上懒人一键下载并启动脚本,等待下载/安装过程中可以详细了解具体流程 - -``` bash -curl -C- -fLO https://github.com/easzlab/kubeasz/releases/download/2.2.3/start-aio -chmod +x ./start-aio -./start-aio 2.2.3 -``` - ### 1.基础系统配置 - 准备一台虚机配置内存2G/硬盘30G以上 @@ -22,49 +12,47 @@ chmod +x ./start-aio ### 2.下载文件 -- 下载工具脚本easzup,举例使用kubeasz版本2.2.3 -- 关于easzup的启动参数,可以运行 ./easzup 详细查看 +- 下载工具脚本ezdown,举例使用kubeasz版本3.0.0 ``` bash -export release=2.2.3 -curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/easzup -chmod +x ./easzup +export release=3.0.0 +curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown +chmod +x ./ezdown ``` - 使用工具脚本下载 -默认下载最新推荐k8s/docker等版本,使用命令`./easzup` 查看工具脚本的帮助信息 +默认下载最新推荐k8s/docker等版本(更多关于ezdown的参数,运行./ezdown 查看) ``` bash -# 举例使用 k8s 版本 v1.20.1,docker 19.03.14 -./easzup -D -d 19.03.14 -k v1.20.1 +./ezdown -D ``` - 可选下载离线系统包 (适用于无法使用yum/apt仓库情形) ``` bash -./easzup -P +./ezdown -P ``` -上述脚本运行成功后,所有文件(kubeasz代码、二进制、离线镜像)均已整理好放入目录`/etc/ansible` +上述脚本运行成功后,所有文件(kubeasz代码、二进制、离线镜像)均已整理好放入目录`/etc/kubeasz` -- `/etc/ansible` 包含 kubeasz 版本为 ${release} 的发布代码 -- `/etc/ansible/bin` 包含 k8s/etcd/docker/cni 等二进制文件 -- `/etc/ansible/down` 包含集群安装时需要的离线容器镜像 -- `/etc/ansible/down/packages` 包含集群安装时需要的系统基础软件 +- `/etc/kubeasz` 包含 kubeasz 版本为 ${release} 的发布代码 +- `/etc/kubeasz/bin` 包含 k8s/etcd/docker/cni 等二进制文件 +- `/etc/kubeasz/down` 包含集群安装时需要的离线容器镜像 +- `/etc/kubeasz/down/packages` 包含集群安装时需要的系统基础软件 ### 3.安装集群 -- 容器化运行 kubeasz,详见[文档](docker_kubeasz.md) +- 容器化运行 kubeasz,详见ezdown 脚本中的 start_kubeasz_docker 函数 ``` -./easzup -S +./ezdown -S ``` - 使用默认配置安装 aio 集群 ``` -docker exec -it kubeasz easzctl start-aio +docker exec -it kubeasz ezctl start-aio ``` ### 4.验证安装 @@ -86,8 +74,8 @@ $ kubectl get svc -A # 验证集群服务状态 在宿主机上,按照如下步骤清理 -- 清理集群 `docker exec -it kubeasz easzctl destroy` -- 清理运行的容器 `./easzup -C` +- 清理集群 `docker exec -it kubeasz ezctl destroy default` +- 清理运行的容器 `./ezdown -C` - 清理容器镜像 `docker system prune -a` - 停止docker服务 `systemctl stop docker` - 删除docker文件 diff --git a/ezctl b/ezctl index bd28663..e5ccc3c 100755 --- a/ezctl +++ b/ezctl @@ -131,7 +131,7 @@ function new() { # check if already existed [[ -d "clusters/$1" ]] && { logger error "cluster:$1 already existed, if cluster:$1 setup failed, try 'rm -rf clusters/$1' first!"; exit 1; } - logger debug "generate custom cluster files in clusters/$1" + logger debug "generate custom cluster files in $BASE/clusters/$1" mkdir -p "clusters/$1" cp example/hosts.multi-node "clusters/$1/hosts" sed -i "s/_cluster_name_/$1/g" "clusters/$1/hosts" @@ -170,8 +170,8 @@ function new() { logger debug "cluster $1: files successfully created." - logger info "next steps 1: to config 'clusters/$1/hosts'" - logger info "next steps 2: to config 'clusters/$1/config.yml'" + logger info "next steps 1: to config '$BASE/clusters/$1/hosts'" + logger info "next steps 2: to config '$BASE/clusters/$1/config.yml'" } function setup() { diff --git a/ezdown b/ezdown index 2a1d6d9..bdef486 100755 --- a/ezdown +++ b/ezdown @@ -14,8 +14,8 @@ set -o errexit # default settings, can be overridden by cmd line options, see usage DOCKER_VER=19.03.14 -KUBEASZ_VER=2.2.3 -K8S_BIN_VER=v1.20.1 +KUBEASZ_VER=3.0.0-rc +K8S_BIN_VER=v1.20.2 EXT_BIN_VER=0.8.1 SYS_PKG_VER=0.3.3 REGISTRY_MIRROR=CN