zoukankan      html  css  js  c++  java
  • 在Centos7.6使用kubeadm部署k8s 1.14.3

    K8s不是一个软件,而是一堆软件的集合,由于这堆软件各自独立,因此可能k8s安装过程很容易出现问题

    K8s部署有多种方式,本文使用kubeadm部署,从易操作性和可控性来说属于中等的方式

    环境:centos7.6,k8s 1.14.3


    K8s安装前设置

    以下操作在所有节点操作(也就是master1和node1)

    关闭防火墙、selinux和swap,分别运行:

    systemctl stop firewalld

    systemctl disable firewalld

    setenforce 0

    sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

    swapoff -a

    sed -i 's/.*swap.*/#&/' /etc/fstab

     

    PS:生产环境在安装完k8s后要考虑网络安全(例如防火墙开启)的方案,本文没对此说明

    配置内核参数,将桥接的IPv4流量传递到iptables的链,新建或修改文件/etc/sysctl.d/k8s.conf,文件内容如下:

    net.bridge.bridge-nf-call-ip6tables = 1

    net.bridge.bridge-nf-call-iptables = 1

     

    运行sysctl --system

    配置国内yum源,分别运行:

    mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo

    wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo

    yum clean all && yum makecache

    配置国内Kubernetes源,新建或修改文件/etc/yum.repos.d/kubernetes.repo,文件内容如下:

    [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

     

    配置 docker 源,运行:

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


    安装kubeadm、kubelet、kubectl

    以下操作在所有节点操作(也就是master1和node1)

    运行yum install -y kubelet-1.14.3 kubeadm-1.14.3 kubectl-1.14.3,安装k8s 3大组件。

    其中,Kubelet负责与其他节点集群通信,并进行本节点Pod和容器生命周期的管理。Kubeadm是Kubernetes的自动化部署工具,降低了部署难度,提高效率。Kubectl是Kubernetes集群管理工具。

    运行systemctl enable kubelet,设置kubelet开机运行


    部署master节点

    以下操作在master1做

    进行Kubernetes集群初始化,运行:

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

    其中kubernetes-version参数是k8s版本

    apiserver-advertise-address是master节点的ip

    pod-network-cidr是定义POD的网段(不用想这个网段是否存在,因为这是k8s的内部虚拟的网络)

    PS:kubeadm init很容易出错,如果出错可以运行kubeadm reset重置,然后就可以重新kubeadm init

    PS:这里会卡很久,请耐心等待

     

    成功的样子,注意要把kubeadm join这段话拷出来,后面node加入集群会用到

     

    配置kubectl工具,分别运行:

    mkdir -p /root/.kube

    cp /etc/kubernetes/admin.conf /root/.kube/config

    然后运行kubectl get nodes可以查看到k8s集群的所有节点,可见有master节点

    PS:在实际操作中发现,节点加入集群后,其status要等几分钟才变成ready(ready说明正常)

     

    部署flannel网络,运行:

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml


    部署node节点

    以下操作在node1做

    之前kubeadm init成功后有一段话要拷出来,现在可以运行他,这是让node加入集群

     


    集群状态检测

    以下操作在master1做

    运行kubectl get nodes,可见node1已加到集群

    PS:在实际操作中发现,节点加入集群后,其status要等几分钟才变成ready(ready说明正常)

     

    创建Pod(以nginx为例,注意这会占用80端口)以验证集群是否正常,分别运行:

    PS:此操作不是必须,有信心的可以不做,避免多装东西

    kubectl create deployment nginx --image=nginx

    kubectl expose deployment nginx --port=80 --type=NodePort

    kubectl get pod,svc

    成功的样子

     


    部署Dashboard

    Dashboard是k8s自带的查看k8s集群运行信息的图形界面软件

    PS:注意只可以查看而不能操作

    以下操作在master1做

    创建Dashboard的yaml文件,分别运行:

    PS:其中的30001是Dashboard的端口

    wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

    sed -i 's/k8s.gcr.io/loveone/g' kubernetes-dashboard.yaml

    sed -i '/targetPort:/a nodePort: 30001 type: NodePort' kubernetes-dashboard.yaml

    部署Dashboard,分别运行:

    kubectl create -f kubernetes-dashboard.yaml

    创建完成后,检查相关服务运行状态,分别运行:

    kubectl get deployment kubernetes-dashboard -n kube-system

    kubectl get pods -n kube-system -o wide

    kubectl get services -n kube-system

    netstat -ntlp|grep 30001

    成功的样子

     

    创建一个用于Dashboard的用户以及获取用户的令牌(token),分别运行:

    kubectl create serviceaccount  dashboard-admin -n kube-system

    kubectl create clusterrolebinding  dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

    kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

    当运行最后一行,有输出token,注意token要保存好

     

    使用firefox(注意chrome和ie都不行)访问https://192.168.31.141:30001/(ip是master1的),中途有什么危险警告都点通过,直到下图

    PS:令牌就是上面的token的值

     

    看到下图说明Dashboard部署成功,也说明k8s部署成功

     

  • 相关阅读:
    Open source cryptocurrency exchange
    Salted Password Hashing
    95. Unique Binary Search Trees II
    714. Best Time to Buy and Sell Stock with Transaction Fee
    680. Valid Palindrome II
    Java compiler level does not match the version of the installed Java project facet.
    eclipse自动编译
    Exception in thread "main" java.lang.StackOverflowError(栈溢出)
    博客背景美化——动态雪花飘落
    java九九乘法表
  • 原文地址:https://www.cnblogs.com/cannel/p/11104243.html
Copyright © 2011-2022 走看看