kubeasz/docs/setup/kubeasz_on_tencent_cloud.md

5.9 KiB
Raw Blame History

腾讯云 CVM CentOS 系统 kubernetes 集群部署

文档中脚本默认均以 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 节点到监听器
  • 在本集群关联的网络安全组的入站规则中放行此负载均衡的外网 IP

部署步骤


0. 基础系统配置
  • 使用自定义系统镜像 k8s-node 安装系统
  • 配置基础网络、更新源、SSH登陆等
  • 腾讯云后台创建 CLB
1. 以 CentOS 7.x 64bit 镜像初始化 CVM 实例安装 deploy 节点
  • 更新本节点主机名

    hostnamectl set-hostname deploy
    # 重新登录
    
  • 更新主机节点列表
    编辑文件

    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

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. 资源准备
  • 克隆源码

    git clone --depth=1 https://github.com/easzlab/kubeasz.git /etc/ansible
    
  • 下载 k8s 二进制文件 从分享的百度云链接,下载解压到 /etc/ansible/bin 目录

    # 以安装k8s v1.14.1为例
    tar -xvf k8s.1-14-1.tar.gz -C /etc/ansible/
    
  • 生成离线 docker 镜像

    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.1.tar.xz
    # /tmp/extra_images_kubeasz_1.1.tar.xz
    # /tmp/istio_images_bundle_1.1.7.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

    ./make_basic_images_bundle.sh extract
    ./make_extra_images_bundle.sh extract
    
4. 配置集群参数
cd /etc/ansible && cp example/hosts.cloud.example hosts

编辑此 hosts 文件

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

ansible all -m ping

执行安装

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

查看集群状态

kubectl cluster-info
kubectl get cs
kubectl get node
kubectl get pod,svc --all-namespaces -o wide
kubectl top node

资源

origin by waitingsong