zoukankan      html  css  js  c++  java
  • CentOS7 部署K8S集群,最新版1.17.3-0

      小白在网上找了很多关于k8s集群部署的文档,但是版本老旧,到处踩坑,终于部署成功,记录下过程。

    一、准备工作

      虚拟机:VMware® Workstation 15 Pro

      Xhell 6:Xshell.exe: 6.0.0025

      操作系统:CentOS-7

      这里对虚拟机有个要求,2cpu,内存2g,不然初始化master会警告

      具体的关于虚拟机安装可以看另一篇文章https://www.cnblogs.com/CoderLinkf/p/12393993.html

      部署规划

    192.168.3.180        k8s-master
    192.168.2.156        k8s-node1

    1.关闭防火墙,这点基本所有教程都有

      systemctl stop firewalld

    2.关闭selinux

      setenforce 0

    3.关闭swap

      swapoff -a    临时关闭

      free             可以通过这个命令查看swap是否关闭了

      vim /etc/fstab  永久关闭

    4.添加主机名与IP对应的关系

      vim /etc/hosts

    192.168.3.180        k8s-master
    192.168.2.156        k8s-node1

      当然,ip要改成自己的

    5.将桥接的IPV4流量传递到iptables 的链

    cat > /etc/sysctl.d/k8s.conf << EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    
    sysctl --system
    

    6.安装Docker

      1)安装docker

    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo
    yum -y install docker-ce

      2)设置docker服务开机自启

    systemctl enable docker
    systemctl start docker
    

      3)查看docker版本,这里是最新版

    docker --version
    Docker version 19.03.6, build 369ce74a3c

    7.添加阿里云YUM软件源

    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=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
    https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    

    8.安装kubeadm,kubelet和kubectl

    yum makecache fast
    yum install -y kubelet kubeadm kubectl --nogpgcheck
    

      指定版本没试过,这里直接安装最新版,并且跳过公钥检查

    9.部署Kubernetes Master

      1)初始化kubeadm

    kubeadm init --apiserver-advertise-address=192.168.3.180 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.17.3 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
    

      一样的,记得改成自己的master节点ip

      当出现如下结果,表示初始化顺利,这一步要等待几分钟,并且一开始没有进度提示,一度以为卡了

      

      查看镜像

    docker images
    

      

       2)接下来,将初始化结果中的命令复制出来执行:

          

      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

      下面的命令等会儿用来添加节点

    kubeadm join 192.168.3.180:6443 --token dfug5t.cscrkl8hy8whplx7 
        --discovery-token-ca-cert-hash sha256:625f94e773c68ba673f44157e8983640a4505232c0adc0cb8a10f7c05e602c90 
    

      到此,就可以使用kubectl命令了

    kubectl get node
    

        

       但是是notready状态,

      执行  kubectl get pods -n kube-system  命令可以看到,头两个状态是pending

    10.安装flannel

      1)这里,大部分文档的flannel安装链接基本都失效了,找了很久找到一个

       https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml

      将这个文件下载下来,ftp到root下面,然后开始执行

      或者执行命令保存:wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

    sed -i 's@quay.io@quay.azk8s.cn@g' kube-flannel.yml
    kubectl apply -f kube-flannel.yml
    

        

       2)查看是否部署成功

    kubectl get pods -n kube-system
    

        

       3)再次执行  kubectl get node  命令,可以看到,状态是ready

        

       安装失败了,怎么清理环境重新安装啊?执行一条命令:

      kubeadm reset

      然后重新初始化即可

    11.Node节点加入集群

      node节点虚拟机,执行1-8步,然后执行master节点初始化kubeadm时的命令

    kubeadm join 192.168.3.180:6443 --token dfug5t.cscrkl8hy8whplx7 
        --discovery-token-ca-cert-hash sha256:625f94e773c68ba673f44157e8983640a4505232c0adc0cb8a10f7c05e602c90 
    

      如果一直卡在 “Running pre-flight checks” 上,则很可能是时间未同步,token失效导致

      可以在master节点执行

      kubeadm token list

      kubeadm token create

      重新生成即可

      openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

      kubeadm reset<br>$ kubeadm join 192.168.38.11:6443 --token unnscz.aq2r62cuc14w27oa --discovery-token-ca-cert-hash sha256:8b79b6461e58c07333cb2851fe74fd4374af8bbbe0bf7e040b415b86ad4fb89d

    12.测试kubernetes集群

      在master节点中

    kubectl create deployment nginx --image=nginx
    kubectl expose deployment nginx --port=80 --type=NodePort
    kubectl get pod,svc
    

      然后执行  kubectl get pods  查看

      kubectl get pod,svc -o wide

      通过浏览器访问:http://192.168.3.180:32049 正常访问

    参考文章:

    https://www.cnblogs.com/caoxb/p/11243472.html

    https://www.cnblogs.com/zyxnhr/p/12181721.html#_label1_8

  • 相关阅读:
    Compact Framework访问内嵌资源文件
    RBAC权限设计图 [转]
    c# 中判断用户是否按下CTRL键
    分享开发soket经验 我的基于socket的持久层 [转]
    没事教宝宝画画
    界面开发(一)[转]
    Winform中多国语言窗体的设计以及.NET中资源文件的使用[转]
    我眼中的理想系统
    C# WinForm开发系列 Socket/WCF/Rometing/Web Services[转]
    基于RBAC的权限设计模型[转]
  • 原文地址:https://www.cnblogs.com/CoderLinkf/p/12395710.html
Copyright © 2011-2022 走看看