mirror of https://github.com/easzlab/kubeasz.git
update docs
parent
a3d754ccf8
commit
f8cfbe2b09
|
@ -31,7 +31,7 @@
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
- 命令行工具 [easzctl介绍](docs/setup/easzctl_cmd.md)
|
||||
- 命令行工具 [ezctl介绍](docs/setup/ezctl.md)
|
||||
- 公有云自建集群 [部署指南](docs/setup/kubeasz_on_public_cloud.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
|
||||
|
|
|
@ -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` 即可
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 对应更老的版本分支(仅留档保存)
|
||||
|
||||
|
|
|
@ -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 集群
|
||||
|
||||
|
|
|
@ -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
|
||||
```
|
||||
|
||||
### 验证
|
||||
|
|
|
@ -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
|
||||
```
|
||||
|
||||
### 验证
|
||||
|
|
|
@ -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`
|
||||
|
||||
### 其他升级说明
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
```
|
||||
|
||||
上述清理脚本执行成功后,建议重启节点,以确保清理残留的虚拟网卡、路由等信息。
|
|
@ -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 反馈您的意见和建议!
|
|
@ -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.重复步骤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 反馈您的意见和建议!
|
|
@ -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 集群,云上云下的预期安装体验完全一致
|
||||
|
||||
|
|
|
@ -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 如下:
|
||||
|
||||
|
|
|
@ -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
|
||||
```
|
||||
|
|
|
@ -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文件
|
||||
|
|
6
ezctl
6
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() {
|
||||
|
|
Loading…
Reference in New Issue