From e3763201c626e8f414c2a0908f427d9a9262f07f Mon Sep 17 00:00:00 2001 From: gjmzj Date: Mon, 10 Jun 2019 21:35:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0ha-1x=E6=9E=B6=E6=9E=84?= =?UTF-8?q?=E7=AD=89=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- docs/setup/00-planning_and_overall_intro.md | 4 ++++ down/download.sh | 11 +++++------ pics/ha-1x.gif | Bin 0 -> 17598 bytes 4 files changed, 10 insertions(+), 7 deletions(-) create mode 100644 pics/ha-1x.gif diff --git a/README.md b/README.md index 49faf82..d9ca5a2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ `kubeasz`致力于提供快速部署高可用`k8s`集群的工具, 同时也努力成为`k8s`实践、使用的参考书;基于二进制方式部署和利用`ansible-playbook`实现自动化;既提供一键安装脚本, 也可以根据[指南](docs/setup/00-planning_and_overall_intro.md)分步执行安装各个组件。 -- **集群特性** `TLS`双向认证、`RBAC`授权、多`Master`高可用、支持`Network Policy`、备份恢复 +- **集群特性** `TLS`双向认证、`RBAC`授权、[多Master高可用](docs/setup/00-planning_and_overall_intro.md#HA architecture)、支持`Network Policy`、备份恢复 - **集群版本** kubernetes v1.8, v1.9, v1.10, v1.11, v1.12, v1.13, v1.14 - **操作系统** Ubuntu 16.04+, CentOS/RedHat 7 - **运行时** docker 17.03.x-ce, 18.06.x-ce, 18.09.x, [containerd](docs/guide/containerd.md) 1.2.6 diff --git a/docs/setup/00-planning_and_overall_intro.md b/docs/setup/00-planning_and_overall_intro.md index aa6f308..8fabd35 100644 --- a/docs/setup/00-planning_and_overall_intro.md +++ b/docs/setup/00-planning_and_overall_intro.md @@ -2,6 +2,10 @@ 多节点高可用集群部署步骤与[AllinOne部署](quickStart.md)基本一致,增加LB 负载均衡部署步骤。 +### HA architecture + +![ha-1x](../../pics/ha-1x.gif) + - 注意1:请确保各节点时区设置一致、时间同步。 如果你的环境没有提供NTP 时间同步,推荐集成安装[chrony](../guide/chrony.md) - 注意2:如果需要在公有云上创建多主多节点集群,请结合阅读[在公有云上部署 kubeasz](kubeasz_on_public_cloud.md) diff --git a/down/download.sh b/down/download.sh index 80d6927..9b0fd4a 100644 --- a/down/download.sh +++ b/down/download.sh @@ -3,16 +3,15 @@ # It's suggested to download the entire *.tar.gz at https://pan.baidu.com/s/1c4RFaA # example releases -K8S_VER=v1.13.4 -ETCD_VER=v3.3.8 -DOCKER_VER=18.09.2 +K8S_VER=v1.13.7 +ETCD_VER=v3.3.10 +DOCKER_VER=18.09.6 CNI_VER=v0.7.5 -DOCKER_COMPOSE_VER=1.18.0 +DOCKER_COMPOSE_VER=1.23.2 HARBOR_VER=v1.5.4 CONTAINERD_VER=1.2.6 -echo -e "\nNote1: Before this script, please finish downloading binaries manually from following urls." -echo -e "\nNote2:If binaries are not ready, use `Ctrl + C` to stop this script." +echo -e "\n\033[33mNote1: please download binaries manually from following urls.\033[0m" echo -e "\n----download k8s binary at:" echo -e https://dl.k8s.io/${K8S_VER}/kubernetes-server-linux-amd64.tar.gz diff --git a/pics/ha-1x.gif b/pics/ha-1x.gif new file mode 100644 index 0000000000000000000000000000000000000000..6946e7a28e423de403fe74595d6d4346be8babdc GIT binary patch literal 17598 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 literal 0 HcmV?d00001