• Kubernetes集群部署

    预备知识

    如果你不知道以下是做什么的,那么请参考下面链接(包括但不限于)进行学习:

    前置要求与约定

    1. 集群会使用到的端口号

    2. 各服务器时间与时区需一致,集群内服务器间时间差值不能大于1秒。

    3. 文档以 4 个 CentOS 7.4 系统服务器安装高可用 Kubernetes 集群进行讲解。

    4. 按照本文档安装 Kubernetes 集群时,Ansible 脚本会将服务器上防火墙关闭,请使用安全组进行网络权限控制。

    5. Master(s) 服务器为 Kubernetes 控制服务器;Worker(s) 服务器为 Kubernetes 运算服务器;Etcd 服务器为组建Etcd 集群的服务器,Etcd 官方建议 Etcd 集群服务器个数为奇数个(比如1、3、5)以防止脑裂。

    6. 为安全考虑按本教程安装的 Kubernetes 集群只会在 Master(s) 服务器上配置 kubectl 命令所需 kubeconfig,故 Worker(s) 服务器默认是无法使用 kubectl 命令的。

    集群安装示例

    环境准备

    # 安装 git 命令行
    sudo yum install git -y
    # 克隆本项目代码
    git clone https://github.com/choerodon/kubeadm-ha.git
    # 进入项目目录
    cd kubeadm-ha
    # 安装 ansible 环境
    sudo ./install-ansible.sh
    

    配置 ansible inventory 文件

    集群部署

    授权策略 协议类型 端口范围 授权类型 授权对象 描述
    允许 TCP 8080 地址段访问 0.0.0.0/0 http 协议访问集群
    允许 TCP 443443 地址段访问 0.0.0.0/0 https 协议访问集群
    允许 TCP 3000032767 地址段访问 0.0.0.0/0 NodePort 访问集群
    允许 全部 -1/-1 地址段访问 10.244.0.0/18 跨节点 Pod 之间互相访问
      # 在项目根目录下执行
      ansible-playbook -i inventory.ini 90-init-cluster.yml
    
      # 任意master节点下执行
      kubectl get po --all-namespaces -w
    
      # 在项目根目录下执行
      ansible-playbook -i inventory.ini 99-reset-cluster.yml
    

    集群网络测试

    集群访问公网测试

    测试说明

      curl -o /dev/null -s -w '%{time_connect} %{time_starttransfer} %{time_total}' "choerodon.io"
    

    场景一、 Kubernetes集群node服务器访问公网

    场景二、Kubernetes集群Pod访问公网

    集群内部网络延迟测试

    测试说明

    场景一、 Kubernetes集群node服务器上通过Service Cluster IP访问

    场景二、Kubernetes集群内部通过service访问

    集群内部网络性能测试

    测试说明

    场景一、主机之间

    注意: 此时该服务端命令会前台运行,一直等待客户端请求,请另起一个终端窗口进行执行客户端命令。

    场景二、不同主机的Pod之间

    注意: 此时该服务端命令会前台运行,一直等待客户端请求,请另起一个终端窗口进行执行客户端命令。查看输出的日志,替换下面客户端命令中Pod的IP

    场景三、节点与其他点的 Pod 之间

    注意: 此时该服务端命令会前台运行,一直等待客户端请求,请另起一个终端窗口进行执行客户端命令。