1. 安装要求

  • 系统版本:CentOS 7.x
  • 硬件配置:内存2GB以上、CPU2核以上、硬盘大于30G
  • 集群网络配置:集群中所有服务器内网必须互通,并且需要访问外网来拉取镜像
  • 禁用swap分区

2. 安装前的准备工作

  • 关闭防火墙

    1
    2
    $ systemctl stop firewalld
    $ systemctl disable firewalld
  • 关闭selinux:

    1
    2
    $ sed -i 's/enforcing/disabled/' /etc/selinux/config
    $ setenforce 0
  • 关闭swap分许
    临时关闭:swapoff -a
    永久关闭:注释掉/etc/fstab文件中的swap行

  • 编辑hosts文件,将所有节点的ip和主机名一一对应

    1
    2
    3
    172.16.17.10     kubernetes-master
    172.16.17.11 kubernetes-node-1
    172.16.17.12 kubernetes-node-2
  • 将桥接的IPv4流量传递到iptables的链

    1
    2
    3
    4
    5
    $ cat > /etc/sysctl.d/k8s.conf << EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    $ sysctl --system
  • 开启IP转发功能

    1
    echo "1" > /proc/sys/net/ipv4/ip_forward
  • NTP时间服务同步

    1
    2
    $ yum -y install ntpdate
    $ ntpdate -u ntp.api.bz

3. 开始安装

在所有节点上安装Docker/kubeadm/kubelet

3.1 安装Docker

  1. 安装必要的一些系统工具
1
yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 添加软件源信息
    1
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  2. 更改仓库镜像地址
    1
    sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
  3. 更新并安装Docker-CE,这里我们安装19.03版本。其他安装Docker相关的选项请移步 https://developer.aliyun.com/mirror/docker-ce
    1
    2
    yum makecache
    yum -y install docker-ce-19.03.14 docker-ce-cli-19.03.14 containerd.io
  4. 开启Docker服务
    1
    2
    systemctl enable docker
    systemctl restart docker
  5. 查看Docker是否安装成功
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    [root@kubernetes-master ~]# docker version
    Client: Docker Engine - Community
    Version: 19.03.14
    API version: 1.40
    Go version: go1.13.15
    Git commit: 5eb3275d40
    Built: Tue Dec 1 19:20:42 2020
    OS/Arch: linux/amd64
    Experimental: false

    Server: Docker Engine - Community
    Engine:
    Version: 19.03.14
    API version: 1.40 (minimum version 1.12)
    Go version: go1.13.15
    Git commit: 5eb3275d40
    Built: Tue Dec 1 19:19:17 2020
    OS/Arch: linux/amd64
    Experimental: false
    containerd:
    Version: 1.4.3
    GitCommit: 269548fa27e0089a8b8278fc4fc781d7f65a939b
    runc:
    Version: 1.0.0-rc92
    GitCommit: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
    docker-init:
    Version: 0.18.0
    GitCommit: fec3683

4. 用kubeadm部署Master

1
2
3
4
5
6
kubeadm init \
--apiserver-advertise-address=172.16.17.10 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.20.2 \
--service-cidr=192.168.1.0/24 \
--pod-network-cidr=192.168.200.0/24

apiserver-advertise-address参数: master组件监听的api地址,这里写masterIP地址即可或者多网卡选择另一个IP地址
kubernetes-version: 指定安装的版本

5. 安装flannel

1
kubectl apply -f https://gitee.com/mirrors/flannel/raw/master/Documentation/kube-flannel.yml

6. 加入Node

在Node节点上执行在kubeadm init输出的kubeadm join命令:

1
kubeadm join 172.16.17.10:6443 --token iz96vy.f5ukew9geeome5is --discovery-token-ca-cert-hash sha256:72b689426bfc34512294c29b39ea3b2af3a94e39f62c4434f3a49f16d51a1382