一. 前言:

本次小熙分享下Linux上部署kubernetes,以下操作如果没有标注指定节点执行,则都需要执行。

二. 准备环境:

  1. 准备三台Linux服务器(这里小熙准备的是虚拟机):
    准备虚拟机
    检查服务器的版本,本次配置要求在centos7.5版本或者以上版本

    [root@k8s-master etc]# cat /etc/redhat-release
    CentOS Linux release 7.6.1810 (Core) 
    
  2. 为了以下流程理解方便,在每个节点的hosts文件上配置对应地址映射 :

    vi /etc/hosts
    
    192.168.186.130    k8s-master
    192.168.186.131    k8s-node1
    192.168.186.132    k8s-node2
    
  3. 时间同步:
    k8s要求集群中的节点时间必须精确一致,这里使用chronyd服务从网络同步时间
    chronyd配置集群链接

    # 启动服务
    [root@k8s-master /]# systemctl start chronyd
    
    # 设置服务自启动
    [root@k8s-master /]# systemctl enable chronyd
    
    # 查看时间
    [root@k8s-master /]# date
    Tue Jan 11 18:03:53 CST 2022
    
  4. 禁用firewalld和iptables服务:
    kubernetes在运行中以及相关拓展会用到很多iptables规则和端口,所以都禁用了。

    [root@k8s-master /]# systemctl stop firewalld
    [root@k8s-master /]# systemctl disable firewalld
    [root@k8s-master /]# systemctl stop iptables
    [root@k8s-master /]# systemctl disable iptables
    
  5. 禁用selinux:
    selinux是linux系统的一个安全服务,如果不关闭将造成集群各种问题

    # 编辑、/etc/selinux/config 文件
    # 修改之后需要重启服务
    SELINUX=disabled
    
  6. 禁用swap分区:
    临时关闭:swapoff -a
    永久关闭:注释掉/etc/fstab文件中的swap行

  7. 将桥接的IPv4流量传递到iptables的链(也可以用ipvs实现):

    cat > /etc/sysctl.d/k8s.conf << EOF >
    
    net.bridge.bridge-nf-call-ip6tables = 1
    
    net.bridge.bridge-nf-call-iptables = 1
    
    EOF 
    
  8. 重启服务(生效修改配置):

    reboot
    

三. 安装docker服务:

  1. 设置镜像源:

    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
    
  2. 查看镜像源列表(可选择对应版本安装):

    yum list docker-ce --showduplicates
    
  3. 安装特定版本的docker-ce:

    yum install docker-ce-19.03.15-3.el7
    
  4. 添加一个配件:
    (1) 创建文件夹:

    mkdir /etc/docker
    

    (2)添加配件:

    # Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes荐庚用systemd来代曾cgroupfs
    
    cat<<EOF > /etc/docker/daemon.json
    {
      "registry-mirrors": [
        "https://kfwkfulq.mirror.aliyuncs.com",
        "https://2lqq34jg.mirror.aliyuncs.com",
        "https://pee6w651.mirror.aliyuncs.com",
        "https://registry.docker-cn.com",
        "http://hub-mirror.c.163.com"],
     "exec-opts":["native.cgroupdriver=systemd"]
    }
    EOF
    
  5. 重启docker:

    systemctl restart docker
    

四. 安装k8s相关组件:

由于kubernetes的镜像源在国外,速度比较慢,这里切换成国内的镜像源
编辑 /etc/yum.repos.d/kubernetes.repo,添加下面的配置

  1. 修改镜像源:

    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
    http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    
  2. 安装kubeadnu kubelet和kubectl(这里选择定制版本):
    (1)定制版本:

    yum install --setopt=obsoletes=0 kubeadm-1.17.4 kubelet-1.17.4 kubectl-1.17.4 -y
    

    (2)最新版本:

    yum install -y kubelet kubeadm kubectl
    

    (3)查看kubelet版本:

    kubelet --version
    

    (4)查看kubeadm版本:

    kubeadm version
    
  3. 重新加载配置文件:

    systemctl daemon-reload
    
  4. 启动kubelet:
    (1)启动:

    systemctl start kubelet
    

    (2)查看启动状态(报错可以先不用管,后面kubeadm会初始化拉起):

    systemctl status kubelet
    

    (3)设置开机自启:

    systemctl enable kubelet
    

    (4)查看kubelet开机启动状态 (enabled:开启, disabled:关闭):

    systemctl is-enabled kubelet
    
    

    (5)查看日志命令:

    journalctl -xefu kubelet
    

五. 初始化集群:

  1. 准备kubernetes相关镜像:
    (1)查看相关镜像版本(可选择对应版本安装):

    kubeadm config images list
    

    (2)安装对应版本镜像:

    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.17.4
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.17.4
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.17.4
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.17.4
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.5
    

    (3)更改镜像名称新增镜像:

    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.17.4 k8s.gcr.io/kube-apiserver:v1.17.4
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.17.4 k8s.gcr.io/kube-controller-manager:v1.17.4
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.17.4 k8s.gcr.io/kube-scheduler:v1.17.4
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.17.4 k8s.gcr.io/kube-proxy:v1.17.4
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5
    

    (4)删除原先下载的镜像:

    docker image rm registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.17.4
    docker image rm registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.17.4
    docker image rm registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.17.4
    docker image rm registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.17.4
    docker image rm registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
    docker image rm registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
    docker image rm registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.5
    
  2. 初始化集群(master节点):
    (1)执行初始化命令:

    kubeadm init --kubernetes-version v1.17.4  --pod-network-cidr 10.244.0.0/16  --ignore-preflight-errors=NumCPU
    

    初始化集群master节点

    (2)创建必要的文件:

      mkdir -p $HOME/.kube
      cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      chown $(id -u):$(id -g) $HOME/.kube/config
    
  3. node节点加入master节点(node节点):
    子节点执行如上图所要执行的命令:

    kubeadm join 192.168.186.130:6443 --token zb65ub.dkfhjl007osls160 \
        --discovery-token-ca-cert-hash sha256:1707cbb30fa0d1b60028fd5f1cb00f2ef87df5cd045c6040b07387ee5d2894d8
    
  4. 安装网络插件(master节点):
    (1)创建文件夹:

    mkdir flannel && cd flannel
    

    (2)下载文件:

    curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    

    (3)kube-flannel.yml里需要下载镜像:

    docker pull quay.io/coreos/flannel:v0.14.0-rc1
    

    (4)创建flannel网络插件:

    kubectl apply -f kube-flannel.yml
    
  5. 查看kubernetes集群节点状态(等一会都变成ready就成功了):

    kubectl get nodes
    

master查看集群全部

六. 后语:

以上就是相关部署了。下次介绍下相关kubernetes-dashboard的部署和使用。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐