美文网首页
基于3台kvm搭建k8s集群

基于3台kvm搭建k8s集群

作者: 夜醉梦紅尘 | 来源:发表于2019-12-09 20:50 被阅读0次

    参考文档(k8s中文社区):https://www.kubernetes.org.cn/5846.html
    (其实有条件的话可以在云上买上三台虚拟机,就不用这么费力搭建拉)

    一、环境准备

    1、3台kvm

    3台 2核2G 的 kvm
    Cent OS 7.6
    
    

    2、安装后的软件版本为

    Kubernetes v1.16.0
    calico 3.8.2
    nginx-ingress 1.5.5
    Docker 18.09.7
    
    

    二、开始搭建

    3台虚拟机里,一台是 master, 2 台是 node,
    1.命令行安装kvm

    1 yum install libvirt* virt-* qemu-kvm* -y
    
    2 systemctl start libvirtd.service
    
    3 virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --
    name centos7 --memory 1024 --vcpus 1 --disk /data/eden.raw,format=raw,size=10 --
    cdrom /data/CentOS-7-x86_64-DVD-1810.iso  --network network=default --graphics
    vnc,listen=0.0.0.0,port=5900 --noautoconsole
    

    需要获取CentOS-7-x86_64-DVD-1810.iso

    2.修改hostname

    # 修改 hostname
    hostnamectl set-hostname your-new-host-name
    # 查看修改结果
    hostnamectl status
    # 设置 hostname 解析
    echo "127.0.0.1   $(hostname)" >> /etc/hosts
    
    

    3、安装 docker / kubelet,三台虚拟机都要进行这部操作

    
    curl -sSL https://kuboard.cn/install-script/v1.16.0/install-kubelet.sh | sh
    
    

    4、初始化 master 节点

    注意事项:
    只在 master 节点执行
    替换 x.x.x.x 为 master 节点实际 IP(请使用内网 IP)
    export 命令只在当前 shell 会话中有效,开启新的 shell 窗口后,如果要继续安装过程,请重新执行此处的 export 命令
    
    替换 apiserver.demo 为 您想要的 dnsName (不建议使用 master 的 hostname 作为 APISERVER_NAME)
    
    Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
    
    export MASTER_IP=x.x.x.x
    export APISERVER_NAME=apiserver.demo
    export POD_SUBNET=10.100.0.1/20
    echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts
    curl -sSL https://kuboard.cn/install-script/v1.16.0/init-master.sh | sh
    
    

    查看初始化结果

    # 只在 master 节点执行
    
    # 执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态
    watch kubectl get pod -n kube-system -o wide
    
    # 查看 master 节点初始化结果
    kubectl get nodes -o wide
    
    

    获得 join命令参数
    在 master 节点上执行

    在 master 节点执行
    kubeadm token create --print-join-command
    获得的参数复制,留着给worker使用
    

    5、初始化 worker 节点

    刚才在master上可获取kubeadm join 命令及参数,如下所示

    
    kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt     --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303
    
    

    初始化worker
    针对所有的 worker 节点执行

    只在 worker 节点执行
    替换 ${MASTER_IP} 为 master 节点实际 IP
    替换 ${APISERVER_NAME} 为初始化 master 节点时所使用的 APISERVER_NAME
    替换为 master 节点上 kubeadm token create 命令的输出
    
    echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts
    如:echo “192.168.122.185 apiserver.demo“ >> /etc/hosts
    
    kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt     --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303
    
    

    检查初始化结果
    在 master 节点上执行

    只在 master 节点执行
    kubectl get nodes -o wide
    
    

    输出结果如下所示:

    image

    移除 worker 节点
    正常情况下,您无需移除 worker 节点,如果添加到集群出错,您可以移除 worker 节点,再重新尝试添加
    在准备移除的 worker 节点上执行

    # 只在 worker 节点执行
    kubeadm reset
    
    

    三、报错

    1.在初始化 master 节点时,由于 kvm 上没安装 wget,会报没有 wget 命令。
    解决方法:

    依次执行以下命令
    1、yum  install  -y  wget
    2、wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml
    3、sed -i "s#192\.168\.0\.0/16#${POD_SUBNET}#" calico.yaml
    4、kubectl apply -f calico.yaml
    
    

    2.ThinkPad安装不上kvm虚拟机
    关机--》按F1 ---》进入bios界面 --》security选项 --》visualizaiton选项 --》enabled
    保存启动即可

    本次得到集群的三个IP:
    master 192.168.122.185
    kube-node1 192.168.122.209
    kube-node2 192.168.122.170

    相关文章

      网友评论

          本文标题:基于3台kvm搭建k8s集群

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