Kubernetes 集群部署

确认主机的独立性

  1. 确认 MAC 地址独立
    # cat /sys/class/net/eth0/address
    
  2. 确认系统 UUID 独立
    # cat /sys/class/dmi/id/product_uuid
    

设置 Hostname 并修改 Hosts 文件

  1. 设置主机名 ( 以 master 为例 )
    # hostnamectl set-hostname kubemaster
    
  2. 配置 HOSTS 文件 ( master和node的内容必须一致,先用 scp 复制 )
    # echo -e "10.64.128.77\tkubemaster\n10.64.128.78\tnode1" >> /etc/hosts
    
  3. 设置公私钥
    # mkdir ~/.ssh && chmod 700 ~/.ssh; ssh-keygen -t rsa
    # cat ~/.ssh/id_ras.pub > authorized_keys
    # chmod 600 ~/.ssh/authorized_keys
    # scp authorized_keys [dest_usr]@[dest_ip]:/home/[username]/.ssh/
    

安装指定版本 Docker

  1. 移除旧版(如果有的话)
    yum remove docker \
          docker-client \
          docker-client-latest \
          docker-common \
          docker-latest \
          docker-latest-logrotate \
          docker-logrotate \
          docker-selinux \
          docker-engine-selinux \
          docker-engine
    
  2. 安装必要的工具
    # yum install -y yum-utils device-mapper-persistent-data lvm2
    
  3. 添加软件源信息
    # yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  4. 更新 Yum 缓存
    # yum makecache fast
    
  5. 查看可用的 Docker-CE 版本
    # yum list docker-ce --showduplicates | sort -r
    
  6. 安装指定版本的 Docker
    # yum install docker-ce-18.03.1.ce-1.el7.centos
    

更新 Linux 内核

  1. 确认内核版本(低于 5 的版本都必须更新)
    # uname -r
    
  2. 添加 ELRepo 的校验 key
    # rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    
  3. 安装 ELRepo
    # yum install -y https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
    
  4. 挑选有效的内核
    # yum --disablerepo="*" --enablerepo="elrepo-kernel" list available --showduplicates
    
  5. 安装内核(可以根据第四步指定版本,这里就不指定了)
    # yum --enablerepo="elrepo-kernel" install -y kernel-ml
    
  6. 调整默认内核启动顺序
    # grub2-set-default 0
    # grub2-mkconfig -o /boot/grub2/grub.cfg
    
  7. 重启系统
    # reboot
    

改变 Selinux 规则及关闭防火墙

  1. 关闭 Selinux
    # setenforce 0
    # sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
    
  2. 关闭防火墙
    # systemctl stop firewalld
    # systemctl disable firewalld
    

关闭 Swap 分区并开启网桥

  1. 关闭 Swap 分区
    # swapoff -a
    # cp /etc/fstab /etc/fstab_bak
    # sed -i "s/\/dev\/mapper\/centos-swap/# \/dev\/mapper\/centos-swap/" /etc/fstab
    # echo "vm.swappiness = 0" >> /etc/sysctl.conf
    # sysctl -p
    
  2. 配置网桥
    # cat <<EOF >  /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    # sysctl --system
    

安装 Kubeadm 及添加 Kubernetes 镜像

由于镜像是保存在 GCP 的,可能在拉去镜像时会失败,因此在这一步中,不同区域的服务器的操作会有所出入。不过大致的思路就是通过一些中转手段,把镜像获取下来。

墙内方案

  1. 安装 Kubeadm, Kubelet, Kubectl
    # 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
    # yum install -y --nogpgcheck kubelet kubeadm kubectl --disableexcludes=kubernetes
    # systemctl enable kubelet && systemctl start kubelet
    
  2. 查看需要的镜像版本
    # kubeadm config images list
    

墙外方案

  1. 安装 Kubeadm, Kubelet, Kubectl
    # 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
    # yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
    # systemctl enable --now kubelet
    
  2. 直接拉取镜像
    # kubeadm config images pull
    

参考资料

评论