• 在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部署成功

     

  • 相关阅读:
    网站性能在线评估
    如何测试电梯/伞/桌子/笔?
    apk反编译查看源码
    Jmeter(四)-断言/检查点
    【转】Jmeter(三)-简单的HTTP请求(非录制)
    【转】Jmeter(二)-使用代理录制脚本
    [转]Jmeter(一)-精简测试脚本
    CentOS 安装以及配置Apache php mysql
    centOS静态ip设置
    免费DDOS攻击测试工具大合集
  • 原文地址:https://www.cnblogs.com/cannel/p/11104243.html
Copyright © 2020-2023  润新知