前期准备工作

  1. 所有机器安装必要软件包,并进行时间同步,防止后续出现问题

    yum -y install wget curl ntpdate yum-utils device-mapper-persistent-data lvm2
    ntpdate ntp1.aliyun.com
    clock -w
  2. 一些系统调整(所有机器执行)

    systemctl disable firewalld
    systemctl stop firewalld
    setenforce 0
    sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
    sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
    swapoff -a
    sed -i 's/.*swap.*/#&/' /etc/fstab
    cat <<EOF >  /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sysctl --system
  3. 进行docker的安装(所有机器执行)

    # 配置阿里云的docker源
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # 指定安装这个版本的docker-ce
    yum install -y docker-ce-18.09.9-3.el7
    # 启动docker
    systemctl enable docker && systemctl start docker
  4. 安装kubeadm kubelet kubectl(所有机器执行)

    # 执行配置k8s阿里云源  
    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/  
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg  
    EOF
    # 安装kubeadm、kubectl、kubelet
    yum install -y kubectl-1.16.0-0 kubeadm-1.16.0-0 kubelet-1.16.0-0
    # 启动kubelet服务
    systemctl enable kubelet && systemctl start kubelet
  5. 初始化master端配置,在master机器上

    # master 本机IP为192.168.244.139  pod网络IP段为10.244.0.0/16,并指定安装版本v1.16.0
    kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.16.0 --apiserver-advertise-address 192.168.244.139 --pod-network-cidr=10.244.0.0/16 --token-ttl 0

    初始化完成后,会提示执行

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

    并记录最后输出的一段代码,用于node节点加入master
    类似于
    `kubeadm join 192.168.244.139:6443 --token aew90y.q89ywcwjgjcm8b2t \
    --discovery-token-ca-cert-hash sha256:181eb0e51d939200c768c43e230e7e4603c8b2c2c3a5b299de4a6df6b7d6226a`

  6. 根据以上输出的join代码在node节点端执行
  7. 完成后在master端 可进行查看所有节点状态
    `kubectl get nodes
    `
  8. 此时会显示notready,需要在服务器执行
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml 

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
# 以下替换node节点IP
scp /etc/kubernetes/admin.conf root@node节点IP:/etc/kubernetes/admin.conf
# 然后现在再次查看,已经变为ready了
kubectl get nodes

到这里Kube已经安装完成了,接下里可以正常安装一些组件或者分发docker镜像了