kubeasz/docs/setup/kubeasz_on_tencent_cloud.md

211 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

### <center>腾讯云 CVM CentOS 系统 kubernetes 集群部署</center>
文档中脚本默认均以 root 用户执行
#### 高可用集群所需节点配置如下
----
|角色|数量|描述|
|:-|:-|:-|
|deploy节点|1|运行这份 ansible 脚本的节点|
|etcd节点|3|注意etcd集群必须是1,3,5,7...奇数个节点|
|master节点|3|共用etcd节点master VIP(虚地址)在云管理后台创建,可根据需要提升机器配置或增加节点数|
|node节点|2|运行应用负载的节点,可根据需要提升机器配置或增加节点数|
#### 环境准备
----
##### 创建 CVM 实例
- 准备6台虚机搭建一个多主高可用集群`Node` 节点内存不低于 4GB
- 生产环境一个节点只担任一个角色
- 1个 `deploy` 节点 网段 10.0.0.3/21
- 3个 `master` 节点 网段 10.0.8.0/21 ,建议采用 SSD 类型磁盘
- 2个或以上 `node` 节点 网段 10.0.8.0/21
##### 创建 master vip
- 云负载均衡中创建传统型内网 CLB, 区域与 CVM 相同,取名为 `k8s-master-lb`,假定为 `10.0.8.12`
- 创建 TCP 类型监听器,前端监听 `8443` 端口,转发后端 `6443` 端口
- 绑定 `master` 节点到监听器
##### 创建 ingress vip (收费类型 可在集群创建成功后操作)
- 云负载均衡中创建应用型外网 CLB, 区域与 CVM 相同,取名为 `k8s-ingress-lb`
- 创建 TCP 类型监听器,前端监听 `23457` 端口,转发后端 `23457` 端口
- 创建 TCP 类型监听器,前端监听 `23456` 端口,转发后端 `23456` 端口
- 绑定 `node` 节点到监听器
#### 部署步骤
----
##### 0. 基础系统配置
+ 使用自定义系统镜像 `k8s-node` 安装系统
+ 配置基础网络、更新源、SSH登陆等
+ 腾讯云后台创建 CLB
##### 1. 以 `CentOS 7.x 64bit` 镜像初始化 CVM 实例安装 deploy 节点
- 更新本节点主机名
```bash
hostnamectl set-hostname deploy
# 重新登录
```
- 更新主机节点列表
编辑文件
```bash
vi /etc/hosts
```
删除云主机自动创建的回环主机名映射行,如下类似
```
127.0.0.1 VM_0_15_centos VM_0_15_centos
::1 VM_0_15_centos VM_0_15_centos
```
根据服务器配置添加主机列表,添加
```
10.0.0.3 deploy
10.0.8.2 master01
10.0.8.3 master02
10.0.8.4 master02
10.0.8.10 node01
10.0.8.11 node02
```
##### 2. 在deploy节点安装及准备ansible
pip 安装 ansible
``` bash
yum install python-pip -y
# pip安装ansible (腾讯云服务器自带加速)
pip install pip --upgrade
pip install ansible
# pip安装ansible(国内如果安装太慢可以直接用pip阿里云加速)
pip install pip --upgrade -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install --no-cache-dir ansible -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
```
##### 3. 资源准备
- 克隆源码
```bash
git clone --depth=1 -b cvm https://github.com/waitingsong/kubeasz.git /etc/ansible
```
- 下载 k8s 二进制文件
从分享的[百度云链接](https://pan.baidu.com/s/1c4RFaA),下载解压到 `/etc/ansible/bin` 目录
```bash
# 以安装k8s v1.13.5为例
tar -xvf k8s.1-13-5.tar.gz -C /etc/ansible/
```
- 生成离线 docker 镜像
```bash
wget https://raw.githubusercontent.com/waitingsong/blog/master/201904/assets/make_basic_images_bundle.sh
wget https://raw.githubusercontent.com/waitingsong/blog/master/201904/assets/make_extra_images_bundle.sh
wget https://raw.githubusercontent.com/waitingsong/blog/master/201904/assets/make_istio_images_bundle.sh
chmod a+x make_basic_images_bundle.sh
chmod a+x make_extra_images_bundle.sh
chmod a+x make_istio_images_bundle.sh
# 根据需要执行脚本进行下载并打包 xz 格式压缩时间比较长
# 分别生成以下文件
# /tmp/basic_images_kubeasz_1.0.tar.xz
# /tmp/extra_images_kubeasz_1.0.tar.xz
# /tmp/istio_images_bundle_1.1.3.tar.xz
./make_basic_images_bundle.sh dump
./make_extra_images_bundle.sh dump
./make_istio_images_bundle.sh dump
```
- 下载离线 docker 镜像
将上一步生成的文件和脚本文件拷贝到 deploy 节点服务器相同目录下执行
istio 安装见文档 [istio_install.md](./istio_install.md)
```bash
./make_basic_images_bundle.sh extract
./make_extra_images_bundle.sh extract
```
##### 4. 配置集群参数
```bash
cd /etc/ansible && cp example/hosts.cloud.example hosts
```
编辑此 hosts 文件
```bash
vi /etc/ansible/hosts
```
更新以下内容
```
# deploy 节点的地址
10.0.0.3 NTP_ENABLED=yes
[etcd]
10.0.8.2 NODE_NAME=etcd1
10.0.8.3 NODE_NAME=etcd2
10.0.8.4 NODE_NAME=etcd3
[kube-master]
10.0.8.2
10.0.8.3
10.0.8.4
[kube-node]
10.0.8.10
10.0.8.11
MASTER_IP="10.0.8.12" # 即 master vip 负载均衡内网地址
```
##### 5. 编排k8s安装
如果你对集群安装流程不熟悉,请阅读项目首页 **安装步骤** 讲解后分步安装,并对 **每步都进行验证**
验证 ansible 执行 正常能看到所有节点返回 SUCCESS
```bash
ansible all -m ping
```
执行安装
```bash
cd /etc/ansible
# 一步安装
ansible-playbook 90.setup.yml
# 分步安装
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
# 把 k8s 集群 ca 证书加入本机信任列表
cp /etc/kubernetes/ssl/ca.pem /etc/pki/ca-trust/source/anchors/ && update-ca-trust
```
#### 查看集群状态
```bash
kubectl cluster-info
kubectl get cs
kubectl get node
kubectl get pod,svc --all-namespaces -o wide
kubectl top node
```
#### 资源
- [kubeasz](https://github.com/easzlab/kubeasz)
- [镜像打包脚本](https://github.com/waitingsong/blog/tree/master/201904/assets)
origin by [waitingsong](https://github.com/waitingsong/blog/blob/master/201904/k8s_cvm_intro.md)