kubeadm 安装 kubernetes

全部服务器配置

IP 地址 主机名 操作系统 内存 swap 硬盘 Internet firewalld selinux /etc/hosts 增加行
10.0.2.80 master80 CentOS7 4GB 关闭 20GB 可达 关闭 关闭 127.0.0.1 master80
10.0.2.81 node81 CentOS7 2GB 关闭 20GB 可达 关闭 关闭 127.0.0.1 node81
10.0.2.82 node82 CentOS7 2GB 关闭 20GB 可达 关闭 关闭 127.0.0.1 node82
  • 确认各服务器工作网卡的 MAC 和 UUID 均不相同

    1
    2
    3
    4
    
    #Ovirt 从模板创建虚拟机可忽略此步骤
    #不确定时可参考如下命令
    rm -rf /etc/udev/rules.d/70-*
    sed -i -e '/HWADDR/d' -e '/UUID/d' /etc/sysconfig/network-scripts/ifcfg-{eth,enp}*
    
  • 配置好 IP,确认各服务器网络互连,且可连互联网

    1
    2
    3
    4
    5
    6
    
    #10.0.2.80
    sed -i 's/10.0.2.127/10.0.2.80/' /etc/sysconfig/network-scripts/ifcfg-eth0
    #10.0.2.81
    sed -i 's/10.0.2.127/10.0.2.81/' /etc/sysconfig/network-scripts/ifcfg-eth0
    #10.0.2.82
    sed -i 's/10.0.2.127/10.0.2.82/' /etc/sysconfig/network-scripts/ifcfg-eth0
    
  • 关闭各服务器的防火墙

    1
    2
    
    systemctl stop firewalld
    systemctl disable firewalld
    
  • 关闭各服务器的 selinux

    1
    2
    
    setenforce 0
    sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
    
  • 关闭各服务器的 swap

    1
    2
    
    swapoff -a
    sed -i '/swap/s/^/#/' /etc/fstab
    
  • 安装 ebtables 和 ethtool

    1
    
    yum install ebtables ethtool
    
  • 配置各服务器的 hostname

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    #10.0.2.80
    hostnamectl set-hostname master80
    echo '127.0.0.1 master80' >> /etc/hosts
    #10.0.2.81
    hostnamectl set-hostname node81
    echo '127.0.0.1 node81' >> /etc/hosts
    #10.0.2.82
    hostnamectl set-hostname node82
    echo '127.0.0.1 node82' >> /etc/hosts
    
  • 重启各服务器

    1
    
    reboot
    

安装 docker

  • 各服务器安装 docker

    1
    
    yum install docker
    
  • 各服务器配置 iptables 转发

    1
    2
    3
    4
    5
    
    cat <<EOF >  /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sysctl --system
    
  • 各服务器配置 docker 本地仓库(可选)

    1
    2
    3
    4
    5
    
    cat <<EOF > /etc/docker/daemon.json
    {
            "insecure-registries":["10.0.16.125:5080"]
    }
    EOF
    
  • 各服务器启动 docker

    1
    
    systemctl enable docker && systemctl start docker
    

安装 kubernetes

  • 各服务器配置 kubernetes yum 源

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
            https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    EOF
    
  • 各服务器安装 kubeadm

    1
    
    yum install -y kubelet kubeadm kubectl
    
  • 各服务器启动 kubelet

    1
    
    systemctl enable kubelet && systemctl start kubelet
    

在 master80 服务器上安装 kubernetes master 服务组件

  • 初始化 kubeadm

    1
    2
    3
    4
    5
    
    kubeadm init --pod-network-cidr=192.168.0.0/16 --token-ttl 0
    mkdir -p /root/.kube
    cp -i /etc/kubernetes/admin.conf /root/.kube/config
    #记录下输出的最后一行,类似如下
    #kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>
    
  • 安装 Calico 网络插件

    1
    
    kubectl apply -f http://docs.projectcalico.org/v2.4/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml
    

加入其他节点

  • 在 node81 和 node82 服务器上执行以下命令,即 master80 服务器 ‘kuberadm init’ 命令的最后一行输出

    1
    
    kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>
    
  • 在 master80 服务器查看节点和 pod 情况

    1
    2
    
    kubectl get pods --all-namespaces
    kubectl get nodes