• Kubernetes集群部署

    预备知识

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

    前置要求与约定

    防火墙及端口检测

    请检测防火墙状态,如果防火墙已开启请仔细阅读端口要求并按下面方式开放指定的端口;若未开启防火墙请跳过本节操作。

    检测防火墙状态(不同的发行版本具体操作可能不一样以供应商说明文档为准)

    开放指定端口

    如果防火墙已启用,则需要开放指定端口,下面分别列举使用firewalld和iptables设置开放端口命令。

    同步服务器时区

    时区和时间的同步性对于服务器很重要(例如您在更新数据库时,时间的准确性对业务的影响会非常大),为避免实例上运行的业务逻辑混乱和避免网络请求错误,您需要将一台或多台服务器设置在同一时区下,比如 Asia/Shanghai 或 America/Los Angeles。您可以根据自己的业务需求并参照本文为服务器设置或者修改时区。此外,NTP(Network Time Protocol)服务能保证您的服务器的时间与标准时间同步,您可以根据本文配置 NTP 服务。

    方法 1. 通过命令tzselect修改时区

    1. 远程连接 Linux 服务器。
    2. 执行命令 tzselect。

      $ tzselect
      Please identify a location so that time zone rules can be set correctly.
      Please select a continent or ocean.
      1) Africa
      2) Americas
      3) Antarctica
      4) Arctic Ocean
      5) Asia
      6) Atlantic Ocean
      7) Australia
      8) Europe
      9) Indian Ocean
      10) Pacific Ocean
      11) none - I want to specify the time zone using the Posix TZ format.
      
    3. 输入上述洲际列表中的数字,如本示例中的 5。

      #? 5  # 输入 5,选择亚洲。
      Please select a country.
      1) Afghanistan      18) Israel           35) Palestine
      2) Armenia          19) Japan            36) Philippines
      3) Azerbaijan       20) Jordan           37) Qatar
      4) Bahrain          21) Kazakhstan       38) Russia
      5) Bangladesh       22) Korea (North)    39) Saudi Arabia
      6) Bhutan           23) Korea (South)    40) Singapore
      7) Brunei           24) Kuwait           41) Sri Lanka
      8) Cambodia         25) Kyrgyzstan       42) Syria
      9) China            26) Laos             43) Taiwan
      10) Cyprus           27) Lebanon          44) Tajikistan
      11) East Timor       28) Macau            45) Thailand
      12) Georgia          29) Malaysia         46) Turkmenistan
      13) Hong Kong        30) Mongolia         47) United Arab Emirates
      14) India            31) Myanmar (Burma)  48) Uzbekistan
      15) Indonesia        32) Nepal            49) Vietnam
      16) Iran             33) Oman             50) Yemen
      17) Iraq             34) Pakistan
      
    4. 输入上述国家列表中的数字,如本示例中的 9。

      #? 9  # 输入 9,选择中国。
      Please select one of the following time zone regions.
      1) east China - Beijing, Guangdong, Shanghai, etc.
      2) Heilongjiang (except Mohe), Jilin
      3) central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.
      4) most of Tibet & Xinjiang
      5) west Tibet & Xinjiang
      
    5. 输入上述城市列表中的数字,如本示例中的 1。并输入确认信息 Yes/No,如本示例中的 1。

      #? 1  # 输入 1,选择北京时间。
      The following information has been given:
          China
          east China - Beijing, Guangdong, Shanghai, etc.
      Therefore TZ='Asia/Shanghai' will be used.
      Local time is now:    Mon Nov  9 13:40:51 CST 2015.
      Universal Time is now:    Mon Nov  9 05:40:51 UTC 2015.
      Is the above information OK?
      1) Yes
      2) No
      #? 1  # 输入 1 确认。
      You can make this change permanent for yourself by appending the line
          TZ='Asia/Shanghai'; export TZ
      to the file '.profile' in your home directory; then log out and log in again.
      Here is that TZ value again, this time on standard output so that you
      can use the /usr/bin/tzselect command in shell scripts:
      Asia/Shanghai
      
    6. 执行命令 hwclock -w 更新硬件时钟(RTC)。

    方法 2. 通过修改配置文件修改时区

    时区配置文件需要以 root 身份打开并编辑,所以此处使用 sudo 命令。
    1. 远程连接 Linux 服务器。
    2. 执行命令 sudo rm /etc/localtime 删除系统里的当地时间链接。
    3. 执行命令 sudo vi /etc/sysconfig/clock 用 vim 打开并编辑配置文件 /etc/sysconfig/clock
    4. 输入 i 添加时区城市,例如添加 Zone=Asia/Shanghai,按下 Esc 键退出编辑并输入 :wq 保存并退出。(可执行命令 ls /usr/share/zoneinfo 查询时区列表,Shanghai 为列表条目之一。)
    5. 执行命令 sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai/etc/localtime 更新时区修改内容。
    6. 执行命令 hwclock -w 更新硬件时钟(RTC)。
    7. 执行命令 sudo reboot 重启实例。
    8. 执行命令 date -R 查看时区信息是否生效,未生效可重走一遍步骤。

    同步服务器时间

    1. 安装ntp服务sudo yum install ntp
    2. 修改成国内时区并同步。

      timedatectl set-timezone Asia/Shanghai
      timedatectl set-ntp yes
      
    3. 查看时间确保同步timedatectl

    本地虚拟机安装示例

    环境准备

    搭建Kubernetes集群

    添加节点

    私有云安装示例

    私有云安装模式指的是在已有的虚拟机中安装,绝大部分centos 7.3+的虚拟机可以通过执行下述命令进行安装,如果你需要安装choerodno请确认集群总内存在48G以上,CPU总核心数大于8核。

    环境准备

    修改hosts文件

    在修改配置文件前请注意以下几点:

    部署

    添加节点

    通过本小节教程添加的节点不能是Master或Etcd节点,只能是普通的Work节点。若你使用的是NFS作为存储,建议你先安装nfs-utils

    公有云安装示例

    公有云安装以阿里云ECS为例进行讲解,其它公有云可参考本教程,但具体安装方式请咨相应云提供商。目前只支持Centos 7.2及以上版本。

    环境准备

    修改hosts文件

    在阿里云的ECS的控制面板上修改ECS实例的hostname,名称最好只包含小写字母、数字和中划线。并保持与inventory/hosts中的名称与ECS控制台上的名称保持一致,重启生效。

    执行下一步前请注意以下几点:

    开始安装

    修改kubeadm-ansible/inventory/vars变量文件

    本文档部署的网络类型为flannel类型

    部署

    添加节点

    通过本小节教程添加的节点不能是Master或Etcd节点,只能是普通的Work节点。若你使用的是NFS作为存储,建议你先安装nfs-utils

    Kubernetes网络测试

    集群搭建完成后请一定进行以下测试步骤进行测试。

    集群访问公网测试

    测试说明

    场景一、 Kubernetes集群node节点访问公网

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

    集群内部网络延迟测试

    测试说明

    场景一、 Kubernetes集群node节点上通过Service Cluster IP访问

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

    注意: 执行测试的node节点/Pod与Serivce所在的Pod的距离(是否在同一台主机上),对这两个场景可以能会有一定影响。

    集群内部网络性能测试

    测试说明

    场景一、主机之间

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

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

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

    场景三、Node与非同主机的Pod之间

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