zoukankan      html  css  js  c++  java
  • centos7虚拟机安装minikube和kubectl

    CentOS7虚拟机安装minikube和kubectl




    1、理论知识



    Minikube提供了一种非常简单的方法来安装单节点的K8S环境。它是一种方便在本地运行Kubernetes的工具,它是可以在 VM 中运行单节点的 Kubernetes 集群,是为了开发或测试在本地启动一个节点的 kubernetes 集群。

    理解上面的图,需要注意一个特别关键的概念minikube Vm。minikube启动后,是先创建一个minikube vm,然后在minikube vm中创建一个单节点的k8s集群,就是说创建了一个集群,但是集群很特殊,只有一个节点。

    在vmware虚拟机的Centos7 下安装minikube的时候,会使用--vm-driver=none,添加这个参数之后,minikube就不会创建minikubevm了,而会直接在当前系统里安装单节点的k8s集群,因为minikube会将当前的虚拟机当成minikube vm。




    安装minikube的过程中,主要步骤包括3个,分别是:安装docker、安装kubectl、安装minikube。

    docker是容器引擎,kubernetes是容器管理工具,为了安装minikube学习kubernetes,安装docker是理所应当的。

    kubectl是一个kubernetes的命令管理工具,也可以称之为一个kubernetes的一个命令行客户端。它和kubernetes的关系,类似于mysql命令和mysqld数据库服务器的管理,mysql是mysqld的一个命令管理工具,mysqld是数据库引擎。

    minikube是缩小版的kubernetes。

    知道了这三者的相互关系,也就明白了为啥安装minikube的过程中要依次安装这三个东西。这是安装的理论知识。下面的步骤就是实践过程了。


    2、安装实践过程




    2.1 安装docker-ce。



    安装docker的过程省略了,因为我已经在以前装好了。

    2.2 安装kubectl。



    # 下载二进制包,添加可执行权限,移动到bin目录,
    # 因为我是root登录的所以是/usr/bin,其他用户登录是/usr/local/bin
    curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl 
    chmod +x ./kubectl &&
    mv ./kubectl /usr/bin/kubectl
    

    kubectl是否安装成功,这么验证:

    [root@bogon minikube]# kubectl version --client
    Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"c2b5237ccd9c0f1d600d3072634ca66cefdf272f", GitTreeState:"clean", BuildDate:"2021-08-04T18:03:20Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}
    [root@bogon minikube]# 
    

    2.3 安装minikube。



    wget https://github.com/kubernetes/minikube/releases/download/v1.7.3/minikube-linux-amd64
    mv minikube-linux-amd64 minikube
    chmod +x minikube
    mv minikube /usr/bin/
    


    2.4 启动minikube




    启动minikube之前,要对系统做一些设置。


    首先,要将虚拟机关闭,重新设置虚拟机的内存和cpu核数,内存至少4G,cpu设置为2核。


    第二,设置防火墙为 Iptables 并设置空规则。因为centos7默认的防火墙是firewalld,所以要先关闭firewalld,然后安装iptables,并设置清空其规则。

    //关闭默认自带防火墙:
    systemctl stop firewalld && systemctl disable firewalld
    
    //安装iptables管理工具,并清空规则:
    yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
    

    第三,关闭selinux
    //下面命令先关闭selinux,然后从selinux的配置文件中设置它为永久关闭。
    setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
    

    第四,关闭swap

    //下面的命令是将/etc/fstab中swap的哪一行注释掉,就是给哪一行最前面加个#
    swapoff -a && sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab
    

    第五,调整内核参数

    cat > kubernetes.conf <<EOF
    net.bridge.bridge-nf-call-iptables=1
    net.bridge.bridge-nf-call-ip6tables=1
    net.ipv4.ip_forward=1
    net.ipv4.tcp_tw_recycle=0
    vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
    vm.overcommit_memory=1 # 不检查物理内存是否够用
    vm.panic_on_oom=0 # 开启 OOM
    fs.inotify.max_user_instances=8192
    fs.inotify.max_user_watches=1048576
    fs.file-max=52706963
    fs.nr_open=52706963
    net.ipv6.conf.all.disable_ipv6=1
    net.netfilter.nf_conntrack_max=2310720
    EOF
    
    //调用配置:
    cp kubernetes.conf /etc/sysctl.d/kubernetes.conf && sysctl -p /etc/sysctl.d/kubernetes.conf
    

    第六,启动

    minikube有2种启动驱动:虚拟机程序启动和裸机启动(也被称为none驱动程序启动)

    • 虚拟机程序启动。
      minikube依赖虚拟机运行。如果是在物理机上安装的minikube,则官方推荐使用libvirt v1.3.1+、qemu-kvm v2.0+或VirtualBox 5.2+等虚拟机来启动minikube。
    • 裸机启动(也被称为none驱动程序启动)。
      如果安装minikube的时候是在Vmware等虚拟机中安装的,那么Vmware虚拟机管理程序不允许嵌套虚拟化,则可以使用裸机启动方式,跳过创建其他VM的操作。裸机启动只能单节点部署k8s。
      启动的时候一定要指定--vm-driver=none,表示不采用任何虚拟机驱动而采用裸机启动,也可以说是采用none驱动程序启动。
      裸机启动方式要求minikube以root身份运行,需要带上--registry-mirror参数,指明从docker中国区的镜像下载数据。
      minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com

    可以设置none为默认驱动程序(裸机启动),那么以后只需要执行minikube start即可正常启动minikube,设置命令:
    minikube config set vm-driver none
    然后执行:
    minikube start --registry-mirror=https://registry.docker-cn.com

    minikube start 命令执行后会依次自动执行以下操作:
    1)验证minikube运行环境
    2)在docker上预加载Kubernates,验证docker
    3)下载kubelet、kubeadm(当前实验版本为v1.16)
    4)拉取Kubernates镜像
    5)启动Kubernates

    //启动minikube下载所需镜像,不会用vbox,所以用默认容器驱动启动的:
    
    minikube start --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers 
        --cpus=2     # 为虚拟机分配核数
        --memory=4096     # 分配内存
        --vm-driver=none
    


    第七,给docker设置阿里云的镜像库。这样docker下载镜像的时候会快一点。

    //添加阿里云加速器,如果/etc/docker下没有daemon.json,则新建一个。
    cat > /etc/docker/daemon.json <<EOF
    {
        "registry-mirrors": [
            "https://registry.docker-cn.com"
        ]
    }
    EOF
    //docker重启后台运行:
    service docker restart && systemctl enable docker
    

    minikube start执行成功后,单个节点的k8s集群就建好了。下面就可以用kubectl命令行客户端对k8s集群进行管理了。

    2.5 启动之后的基本操作

    下面的操作可以分为两类:
    1、用minikube对k8s集群的管理性操作
    2、kubectl客户端的各种操作,它是对单个集群的访问性操作

    # 用minikube对k8s集群的管理性操作:
    # 用类似如下命令设置minikube的各种参数
    minikube config set memory 4096 # minikube默认情况下仅分配2GB的RAM,需扩内存可使用此命令
    # 访问minikube的dashboard 
    minikube dashboard # 访问minikube集群中运行的Kubernetes仪表
    
    # 
    minikube service hello-minikube # 使用minikube可在浏览器中轻松打开此开放节点
    
    # minikube默认启动一个单节点k8s集群,下面命令可以启动另外一个k8s集群,当然,也是单节点的。
    minikube start -p cluster2 # 启动第二个本地集群(注意:裸机启动(本次实验环境)不适用)
    
    # 停止本地集群
    minikube stop 
    
    # 删除本地集群
    minikube delete 
    
    # kubectl客户端的各种操作,它是对单个集群的访问性操作:
    kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8080 # 启动服务器
    kubectl get po -A # 查看pod状态
    kubectl expose deployment hello-minikube --type=NodePort # 将服务公开为NodePort
    

    参考资料:

    1、https://www.cnblogs.com/spll/p/10033316.html,(目前没有用上)
    2、https://www.jianshu.com/p/a92425a6c6a6,(提供了一个清晰的步骤)
    3、https://developer.aliyun.com/article/221687,(minikube启动的配置有详细说明)
    4、https://www.cnblogs.com/harmful-chan/p/12731014.html,(有一个完整的安装步骤,安装过程中主要参考的文档是这个)
    5、https://www.cnblogs.com/mengyucloud/p/12244168.html,(启动配置项具有参考意义)
    6、https://blog.csdn.net/haohaifeng002/article/details/102478143,(另一个主力参考文档)
    7、https://blog.csdn.net/u014636124/article/details/105145674/,(通过这一篇,了解了minikube基本情况)
    8、https://www.jianshu.com/p/b10c0d7f7d18,(这一篇文章提供了一点有益的帮助)




  • 相关阅读:
    USACO Milk2 区间合并
    Codeforces 490B Queue【模拟】
    HDU 3974 Assign the task 简单搜索
    HDU 5119 Happy Matt Friends(2014北京区域赛现场赛H题 裸背包DP)
    Cin、Cout 加快效率方法
    POJ 1159 回文LCS滚动数组优化
    POJ 2479 不相交最大子段和
    POJ 1458 最长公共子序列 LCS
    在阿里最深刻的,还是职场之道给我的震撼
    精细化
  • 原文地址:https://www.cnblogs.com/zhangzl419/p/15162011.html
Copyright © 2011-2022 走看看