• 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,(这一篇文章提供了一点有益的帮助)




  • 相关阅读:
    c++ malloc函数
    CString,string,char*之间的转换
    CString & 类型和引用
    权限管理页面管理
    权限管理模块管理
    Infor SyteLine 8.02 DataBase Server Install(Summary)
    SyteLine在SQL Server启用CLR
    AMD(马来西亚槟城)
    Infor SyteLine 8.02 Utility Server SyteLine Install
    Infor SyteLine 8.02 Utility Server Install(Summary)
  • 原文地址:https://www.cnblogs.com/zhangzl419/p/15162011.html
Copyright © 2020-2023  润新知