update docs

pull/992/head
gjmzj 2021-01-19 14:42:37 +08:00
parent a3d754ccf8
commit f8cfbe2b09
20 changed files with 225 additions and 261 deletions

View File

@ -31,7 +31,7 @@
</tr>
</table>
- 命令行工具 [easzctl介绍](docs/setup/easzctl_cmd.md)
- 命令行工具 [ezctl介绍](docs/setup/ezctl.md)
- 公有云自建集群 [部署指南](docs/setup/kubeasz_on_public_cloud.md)
## 使用指南

View File

@ -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

View File

@ -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` 即可

View File

@ -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)

View File

@ -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

View File

@ -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 对应更老的版本分支(仅留档保存)

View File

@ -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 集群

View File

@ -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
```
### 验证

View File

@ -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.1ssh 端口 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
```
### 验证

View File

@ -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 <cluster_name>`
- 执行升级 `easzctl upgrade`
- 首先确认待升级的集群(如果有多集群的话) `ezctl checkout <cluster_name>`
- 执行升级 `ezctl upgrade`
### 其他升级说明

View File

@ -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)

View File

@ -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
```
上述清理脚本执行成功后,建议重启节点,以确保清理残留的虚拟网卡、路由等信息。

View File

@ -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 反馈您的意见和建议!

115
docs/setup/ezctl.md 100644
View File

@ -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 <cluster> to switch default kubeconfig of the cluster
new <cluster> to start a new k8s deploy with name 'cluster'
setup <cluster> <step> to setup a cluster, also supporting a step-by-step way
start <cluster> to start all of the k8s services stopped by 'ezctl stop'
stop <cluster> to stop all of the k8s services temporarily
upgrade <cluster> to upgrade the k8s cluster
destroy <cluster> to destroy the k8s cluster
backup <cluster> to backup the cluster state (etcd snapshot)
restore <cluster> to restore the cluster state from backups
start-aio to quickly setup an all-in-one cluster with 'default' settings
Cluster ops:
add-etcd <cluster> <ip> to add a etcd-node to the etcd cluster
add-master <cluster> <ip> to add a master node to the k8s cluster
add-node <cluster> <ip> to add a work node to the k8s cluster
del-etcd <cluster> <ip> to delete a etcd-node from the etcd cluster
del-master <cluster> <ip> to delete a master node from the k8s cluster
del-node <cluster> <ip> to delete a work node from the k8s cluster
Extra operation:
kcfg-adm <cluster> <args> to manage client kubeconfig of the k8s cluster
Use "ezctl help <command>" 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.重复步骤12可以创建、管理多个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 反馈您的意见和建议!

View File

@ -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 集群,云上云下的预期安装体验完全一致

View File

@ -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 如下:

View File

@ -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.2docker 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
```

View File

@ -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.1docker 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文件

6
ezctl
View File

@ -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() {

4
ezdown
View File

@ -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