Kubernetes集群部署详细步骤(CentOS 7.8 + Docker 1.13 + Kubernetes 1.5.2)[二]

305 阅读1分钟

一、环境准备

  1. 服务器规划

    角色

    IP地址

    配置要求

    Master

    192.168.118.18

    2核CPU/2G内存

    Node01

    192.168.118.19

    2核CPU/2G内存

    Node02

    192.168.118.20

    2核CPU/2G内存

  2. 系统初始化

    bash

    # 关闭SELinux
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    
    # 关闭防火墙
    systemctl stop firewalld && systemctl disable firewalld
    
    # 禁用Swap
    swapoff -a
    sed -i '/swap/s/^/#/' /etc/fstab
    
    # 配置内核参数
    cat > /etc/sysctl.d/k8s.conf << EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    EOF
    sysctl --system
    

二、Docker安装(1.13版本)

  1. 配置YUM源

    bash

    # 安装依赖
    yum install -y yum-utils device-mapper-persistent-data lvm2
    
    # 添加Docker源
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    # 安装指定版本
    yum install -y docker-ce-1.13.1 docker-ce-cli-1.13.1 containerd.io
    
    # 启动服务
    systemctl start docker && systemctl enable docker
    
    # 验证版本
    docker version | grep '1.13.1'
    
  2. 配置镜像加速

    bash

    cat > /etc/docker/daemon.json << EOF
    {
      "registry-mirrors": ["https://hub-mirror.c.163.com"],
      "exec-opts": ["native.cgroupdriver=systemd"]
    }
    EOF
    systemctl restart docker
    

三、Kubernetes组件安装

  1. 添加K8S源

    bash

    cat > /etc/yum.repos.d/kubernetes.repo << EOF
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
    EOF
    
  2. 安装指定版本

    bash

    # 安装kubeadm/kubelet/kubectl 1.5.2
    yum install -y kubelet-1.5.2 kubeadm-1.5.2 kubectl-1.5.2
    
    # 启动服务
    systemctl enable kubelet && systemctl start kubelet
    

四、集群初始化(Master节点)

  1. 拉取镜像

    bash

    # 手动拉取K8S基础镜像
    images=(kube-proxy:v1.5.2 kube-scheduler:v1.5.2 
            kube-controller-manager:v1.5.2 kube-apiserver:v1.5.2 
            etcd:3.0.18 pause:3.0)
    
    for imageName in ${images[@]}; do
      docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
      docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
      docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
    done
    
  2. 初始化集群

    bash

    kubeadm init --kubernetes-version=v1.5.2 \
      --pod-network-cidr=10.244.0.0/16 \
      --service-cidr=10.96.0.0/12 \
      --ignore-preflight-errors=Swap
    
    # 配置kubectl
    mkdir -p $HOME/.kube
    cp /etc/kubernetes/admin.conf $HOME/.kube/config
    chown $(id -u):$(id -g) $HOME/.kube/config
    

五、Node节点加入集群

  1. 执行Master生成的加入命令

    bash

    kubeadm join 192.168.118.18:6443 \
      --token xxxxx.xxxxxxxxxx \
      --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    

六、部署网络插件(Flannel)

bash

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.7.1/Documentation/kube-flannel.yml

七、集群验证

bash

# 查看节点状态
kubectl get nodes

# 查看系统组件状态
kubectl get pods -n kube-system

# 验证DNS功能
kubectl run busybox --image=busybox:1.28 --rm -it -- sh
nslookup kubernetes.default

注意事项

  1. Kubernetes 1.5.2为老旧版本,无官方安全支持,生产环境建议使用1.23+版本
  2. Docker 1.13需搭配cri-dockerd适配器才能在K8S 1.24+中使用
  3. 如需高可用部署,需额外配置负载均衡和etcd集群