• VmWare采用工具kubeadm 快速k8s集群部署


    1. 安装Docker 环境

    1. # 安装下载工具
    2. yum -y install wget
    3. wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
    4. # 安装这个版本的docker-ce
    5. yum -y install docker-ce-18.06.1.ce-3.el7
    6. # 启动docker
    7. systemctl enable docker && systemctl start docker
    8. # 配置docker 阿里云yum软件源
    9. cat > /etc/docker/daemon.json << EOF
    10. {
    11. "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
    12. }
    13. EOF

    2. 安装kubeadm,kubelet和kubectl

    1. # 安装
    2. yum install -y kubelet-1.17.5 kubeadm-1.17.5 kubectl-1.17.5
    3. # 增加配置信息 如果不配置kubelet,可能会导致K8S集群无法启动。为实现docker使用的cgroupdriver与
    4. # kubelet 使用的cgroup的一致性。
    5. vi /etc/sysconfig/kubelet
    6. KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
    7. # 设置开机启动
    8. systemctl enable kubelet

    3. 部署Kubernetes Master

    1. kubeadm init \
    2. --apiserver-advertise-address=192.168.17.4 \
    3. --image-repository registry.aliyuncs.com/google_containers \
    4. --kubernetes-version v1.17.5 \
    5. --service-cidr=10.96.0.0/12 \
    6. --pod-network-cidr=10.244.0.0/16
    1. mkdir -p $HOME/.kube
    2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    3. sudo chown $(id -u):$(id -g) $HOME/.kube/config
    4. $ kubectl get nodes

    此时需注意Kubelet 和 Kubeadm 版本不一样的,这里指定的版本是 kubernetes-version v1.17.5,不一致会出现错误:

    [ERROR KubeletVersion]: the kubelet version is higher than the control plane version. This is not a supported version skew and may lead to a malfunctional clusterhttps://www.cnblogs.com/wangzy-Zj/p/13274095.html

    4. 加入Kubernetes Node 

    分别在node节点服务器上执行初始化日志中的代码加入集群

    kubeadm join 192.168.17.4:6443 --token ux02vm.wmb11j15of538nzp     --discovery-token-ca-cert-hash sha256:e97661bf45e0554820175cb5d7236dcc5b287b0a61050655f590ea5d8901f055

    执行过程中可能会出现错误:

    1. [ERROR FileContent—proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
    2. [preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=…
    3. To see the stack trace of this error execute with —v=5 or higher

     可以执行如下命令

    echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables

    默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,操作如下:

    kubeadm token create --print-join-command

    如果在加入的时候出错了,而且端口号又被占用了例如:

    1. [preflight] Running pre-flight checks.
    2. [WARNING SystemVerification]: docker version is greater than the most recently validated version. Docker version: 17.12.1-ce. Max validated version: 17.03
    3. [WARNING FileExisting-crictl]: crictl not found in system path
    4. [preflight] Some fatal errors occurred:
    5. [ERROR Port-10250]: Port 10250 is in use
    6. [ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
    7. [ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists

    可以执行重新初始化节点配置:

    kubeadm reset

    再次执行加入主节点:

    kubeadm join 192.168.17.4:6443 --token ux02vm.wmb11j15of538nzp     --discovery-token-ca-cert-hash sha256:e97661bf45e0554820175cb5d7236dcc5b287b0a61050655f590ea5d8901f055

    还有在运行过程中的一些问题:一起汇总到这里

    The connection to the server localhost:8080 was refused - did you specify the right host or port?

    node节点运行kubeadm join后master节点运行kubectl get node不显示node节点

    k8s集群部分常见问题处理

  • 相关阅读:
    vue超好用的自定义指令封装
    Java PrintWriter.println()方法的功能简介说明
    Python 多线程HTTP服务器
    【VM-Tools】Linux快速安装
    【QT】布局管理器及常用控件
    微信小程序开发学习—Day1
    DAY9-深度学习100例-循环神经网络(RNN)实现股票预测
    prometheus学习5altermanager
    Java案例找素数(三种方法)
    DevOps-SonarQube整合Jenkins
  • 原文地址:https://blog.csdn.net/qq_30024063/article/details/127594030