美文网首页
CentOS上安装部署Kubernetes注意事项

CentOS上安装部署Kubernetes注意事项

作者: MunCN | 来源:发表于2018-12-26 13:42 被阅读0次

    博客搬家至 Mun: https://kiddie92.github.io

    简书同步更新

    小目标:不翻墙的情况下,使用kubeadm安装部署Kubernetes集群(非高可用),1个master、2个node

    一、准备工作

    关于机器:

    1. 准备的主机可以连接外网,对于私有云场景,需要做好前期准备(例如:配置yum源、镜像仓库源等)
    2. 满足安装 Docker 项目所需的要求,比如 64 位的 Linux 操作系统、3.10 及以上的内核版本;
    3. x86 或者 ARM 架构均可;
    4. 机器之间网络互通,这是将来容器之间网络互通的前提;

    关于Linux操作系统:

    1. 建议开启root权限(我这里是已经开启了root权限,以root用户登录节点)
    2. 修改各节点的hostname:打开终端输入hostnamectl set-hostname master8088,这里的命名需要有一定的规范重启后hostname失效
    3. 建议:systemd不低于234,否则执行 df 命令的时候,据说会有一定几率卡死,使用systemctl --version查看版本信息
    4. 建议关闭swap输入swapoff -a:如果不满足,据说系统会有一定几率出现 io 飙升,造成 docker 卡死
    5. 关闭防火墙,终端输入systemctl stop firewalld && systemctl disable firewalld
    6. 关闭selinux:vi /etc/selinux/config 设置SELINUX=disabled
    7. 修改hosts文件,vi /etc/hosts
    192.168.0.1 node2   # ip+hostname格式
    192.168.0.2 node1   # ip每个节点的ip地址,可以使用ifconfig命令查看
    192.168.0.3 master
    
    1. 添加相关设置vim /etc/sysctl.conf需要修改的内容如下所示:
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    vm.max_map_count=262144
    

    输入sysctl -p使设置生效

    1. 设置三台机器之间可以使用ssh+hostname互相登录,

    节点之间无密码互相访问设置:

    ssh-keygen
    cat .ssh/id_rsa.pub >> .ssh/authorized_keys
    #将每个节点的id_rsa.pub写入每个节点的authorized_keys
    #最后生成的authorized_keys复制到集群中的每一台计算机的.ssh目录下,覆盖掉之前的authorized_keys
    

    二、安装部署Kubernetes

    安装之前需要配置一下kubernetes这个yum源,否则下面的命令可能失效

    1. 在每个节点上安装kubeadm、kubelet、kubectl,这里选择的是CentOS系统,所以使用命令
    yum install -y kubelet kubeadm kubectl
    

    安装的kubeadm、kubectl、kubelet默认都是最新的版本(1.13版本),也可以指定版本,比如目前是stable版的1.11

    # 查看版本
    kubeadm version
    kubectl version
    kubelet --version
    # 下载安装指定版本
    yum list --showduplicates | grep 'kubeadm' #查看有哪些版本
    yum install -y kubeadm-1.10.5-0.x86_64 # 安装指定版本,这里选择的是1.10.5
    
    1. 部署master节点:
      这里需要注意的是,直接使用kubeadm init会发现需要的镜像获取不了,因为大陆被墙了.. 不过可以指定镜像仓库源,这里选择阿里云杭州的源(感谢_):
    # kubernetes-version=v1.13.1指定了安装1.13.1版本的kubernetes
    # pod-network-cidr是为了后续安装calico这样的网络插件
    kubeadm init --kubernetes-version=v1.13.1 --pod-network-cidr=192.168.0.0/16 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
    

    可能出现kubelet和kubeapi-server失联的情况,注意排查
    master部署完成后,会生成一个指令:kubeadm join ....这个是后续加入node用的
    kubeadm还会在部署好master后,最后提示我们第一次使用kubernetes集群需要的配置命令:mkdir... sudo cp ... sudo chown...

    1. 部署node节点:参照master部署完毕生成的kubeadm join提示,在每个node上执行以下命令
      kubeadm join ${master_ip}:6443 --token ${kubeadm_token} --discovery-token-ca-cert-hash ${hash_value}
      使用kubectl get no查看node是否已经添加,并且处于Ready状态,由于网络插件还没安装,应该不会Ready

    2. 安装CNI插件calico

    kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
    kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
    
    
    1. 删除master上的Taint标签,使之也可以被调度
      kubectl taint nodes --all node-role.kubernetes.io/master-

    至此,一个kubernetes集群已经可以使用了,接下来还可以部署Dashboard、CSI插件

    三、问题记录

    Q1:kubeadm一次运行没有通过,但是部分static Pod已经启动?
    打开终端输入:kubeadm reset,即可重置集群,修改必要的参数后,再次使用kubeadm init ...命令部署K8s集群。

    Q2: 需要事先下载好国内镜像源吗?
    不需要

    由于kubeadm在部署K8s集群时,需要从k8s.gcr.io上拉取镜像,但是大陆需要翻墙,所以有些博客里提出先下载好一样的镜像再修改tag以此绕开从国外拉取镜像的问题,但实际上没有必要这样做;即便如此,还是记录一下吧...

    镜像下载脚本image_download.sh

    #! bin/bash
    
    source=registry.cn-hangzhou.aliyuncs.com/google_containers
    
    images=(
    
    kube-apiserver:v1.13.1
    
    kube-controller-manager:v1.13.1
    
    kube-scheduler:v1.13.1
    
    kube-proxy:v1.13.1
    
    pause:3.1
    
    etcd:3.2.24
    
    
    coredns:1.2.6
    
    )
    
    for imageName in ${images[@]} ; do
        echo $imageName
        echo "------------------------------------"
        docker pull $source/$imageName
        docker tag $source/$imageName k8s.gcr.io/$imageName
    done
    

    四、参考资料

    1. 极客时间-张磊-深入剖析Kubernetes
    2. kubeadm
    3. Creating a single master cluster with kubeadm

    相关文章

      网友评论

          本文标题:CentOS上安装部署Kubernetes注意事项

          本文链接:https://www.haomeiwen.com/subject/dpdhlqtx.html