zoukankan      html  css  js  c++  java
  • Centos7.7使用kubeadm快速部署K8s集群(适合新手)

    部署环境:

    以下实验都是在VM虚拟机中进行部署的,仅供个人学习测试,不建议直接上生产环境.

    PS:其中,master的CPU核数至少需要2核,还没有测试过1G内存是否可以正常安装

    节点   系统   CPU核数   内存   磁盘   IP  
    k8s-master   Centos7.7minimal   2核 2G   20G 192.168.2.130
    k8s-node01 Centos7.7minimal 1核 1G 20G 192.168.2.134  
    k8s-node02 Centos7.7minimal 1核 1G 20G 192.168.2.135

     

     

     

     

     

     

    部署步骤:


    三个节点分别执行以下命令
    192.168.2.130执行该命令
    hostnamectl set-hostname k8s-master
    192.168.2.134执行该命令
    hostnamectl set-hostname k8s-node01
    192.168.2.135执行该命令
    hostnamectl set-hostname k8s-node02

    三个节点全部执行以下命令
    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
    sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
    swapoff -a                         #关闭swap交换分区
    sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab      #禁止swap交换分区开机自启


    #配置hosts文件
    cat >> /etc/hosts << EOF        
    192.168.2.130 k8s-master
    192.168.2.134 k8s-node01
    192.168.2.135 k8s-node02
    EOF


    #内核调整,将桥接的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                        #使上一条命令的配置生效
    yum install -y ntpdate                  #安装ntpdate用于校准时间,确保master和node时间同步
    ntpdate time.windows.com            #校准时间
    yum install wget -y


    #如果以下安装docker的方式失败,可以参考我的博客https://www.cnblogs.com/biaopei/p/11937292.html
    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-18.06.1.ce-3.el7
    #以下命令用来配置镜像地址..
    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
    systemctl enable docker
    systemctl start docker


    #因为默认k8s镜像仓库需要翻出去,所以配置国内镜像地址
    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=0
    repo_gpgcheck=0
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF


    yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
    systemctl enable kubelet

    以下操作只需要在master中执行
    #记得将192.168.2.130修改为master的ip地址,其余不变.需要等待几分钟才可执行完成.会提示[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver.只是警告可忽略.(如果master的cpu核数只有1核,这里还会提示cpu核数达不到要求的2核)
    kubeadm init
    --apiserver-advertise-address=192.168.2.130
    --image-repository registry.aliyuncs.com/google_containers
    --kubernetes-version v1.15.0
    --service-cidr=10.1.0.0/16
    --pod-network-cidr=10.244.0.0/16


    #执行完上一条语句后,会有类似如下命令的提示,根据提示执行即可.还有一条kubeadm join 192.168.2.130:6443 --token,这个是用来在node上执行,加入到k8s集群中的,我们稍后需要用到
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

    以下操作在两个node中执行
    #不要直接复制这里的,是kubeadm init执行完成后,后面提示的那条语句.就是我们刚才说的那个
    kubeadm join 192.168.2.130:6443 --token c1qboh.pg159xmk61z5rbeg
        --discovery-token-ca-cert-hash sha256:ff09b3a7b0989de094b73e811bf378d8ab1cf3c1e413e3753ebd5de826075931

    以下操作在master执行
    #配置flannel网络
    wget https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

    vi kube-flannel.yml
    #修改以下行对应内容,注意不能使用tab键,只能使用空格进行对启,注意格式要按照原来的,不能多一个空格,也不能少一个空格

    106    image: lizhenliang/flannel:v0.11.0-amd64   
    120    image: lizhenliang/flannel:v0.11.0-amd64

    kubectl apply -f kube-flannel.yml
    ps -ef|grep flannel|grep -v grep                   #可能需要10分钟左右启动初始化完成,才有返回结果.然后再执行下一步
    kubectl get nodes                               #可能需要等待十几分钟,状态才能全部转为ready.然后再执行下一步
    kubectl get pod -n kube-system                       #可能需要等待十几分钟,直至所有状态才能全部转为ready 1/1.然后再执行下一步
    kubectl create deployment nginx --image=nginx                #创建nginx服务
    kubectl expose deployment nginx --port=80 --type=NodePort       #暴露nginx服务80端口
    kubectl get pods,svc                               #查看运行中的服务80:31214/TCP.我们从宿主机访问masterip:31214即可访问到nginx服务.但是也需要等待几分钟,直到该端口可以telnet通..然后再执行下一步

    访问nginx,效果:


    #配置k8s UI界面
    wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml


    vi kubernetes-dashboard.yaml
    #修改以下行对应内容,注意不能使用tab键,只能使用空格进行对启,注意格式要按照原来的,不能多一个空格,也不能少一个空格

    ......
    111       - name: kubernetes-dashboard
    112         image: lizhenliang/kubernetes-dashboard-amd64:v1.10.1   # 替换此行
    ......
    
    157 spec:
    158   type: NodePort     # 增加此行
    159   ports:
    160     - port: 443
    161       targetPort: 8443
    162       nodePort: 30001   # 增加此行
    163   selector:
    164     k8s-app: kubernetes-dashboard


    kubectl apply -f kubernetes-dashboard.yaml                         #现在我们可以访问https://192.168.2.130:30001.当然也需要等一会.注意是https

    访问K8S UI界面,效果:

    会提示链接不安全,点击高级->接受风险并继续即可


    kubectl create serviceaccount dashboard-admin -n kube-system                  #创建管理员帐号
    kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin      #配置管理员帐号为集群管理员帐号?

    #执行以下命令后,会生成对应的token,在https://192.168.2.130:30001中选择token,输入该token即可登陆k8s管理后台
    kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

    输入Token,登陆K8S UI界面,效果:

    最终效果

     

     K8S部署完成.

    本文参考自:

    https://cloud.tencent.com/developer/article/1509412

    一次成功,感谢原文作者的分享!

  • 相关阅读:
    2019春第三次课程设计实验报告
    2019春第二次课程设计实验报告
    2019春第一次课程设计实验报告
    第十二周总结
    第十一周总结
    第五周课程总结&试验报告(三)
    第四周课程总结&实验报告(二)
    第三周课程总结&实验报告一
    第二周学习总结
    19春总结
  • 原文地址:https://www.cnblogs.com/biaopei/p/12545310.html
Copyright © 2011-2022 走看看