zoukankan      html  css  js  c++  java
  • 使用Minikube部署本地Kubernetes集群(二十八)

    前言               

    使用Minikube部署本地k8s集群相对比较简单,非常推荐将其用于本地k8s开发环境,唯一麻烦点的仅仅是网络问题。

    在本篇教程中,我们使用了国内的镜像来完成本地k8s集群的搭建。如果搭建过程中出现错误,建议使用minikube delete之后再重新搭建。


    目录

    使用Minikube部署本地Kubernetes集群 

    1. 什么是Kubernetes集群? 

    2. 使用Minikube创建本地Kubernetes实验环境 

    1)什么是Minikube? 

    2)Minikube支持的功能 

    3)Windows 10下安装 

    4)打开Minikube可视化面板 

    5)常见错误 

    6)Linux下安装 


    使用Minikube部署本地Kubernetes集群

    什么是Kubernetes集群?

    Kubernetes 用于协调高度可用的计算机集群,这些计算机被连接作为单个工作单元。 Kubernetes允许用户将容器化的应用程序部署到集群,而不必专门将其绑定到单个计算机。为了利用这种新的部署模型,应用程序需要被容器化。容器化应用程序比过去的部署模型更灵活和可用——而不是将应用程序直接安装到特定机器上,作为深入集成到主机中的软件包。Kubernetes 在一个集群上以更有效的方式自动分发和调度容器应用程序。

    Kubernetes 集群由两种类型的资源组成:

    • Master:即集群的调度节点,负责管理集群,例如调度应用程序、维护应用程序的所需状态、扩展应用程序和滚动更新。
    • Nodes:即应用程序实际运行的工作节点,可以是物理机或者虚拟机。每个工作节点都有一个 Kubelet(节点代理),它是管理节点并与Kubernetes Master节点进行通信的代理。节点上还应支持容器操作,例如 Docker或rkt。一个 Kubernetes 工作集群至少有三个节点。

    当我们在Kubernetes上部署应用程序时, Master会启动应用程序容器,并调度容器在集群的Nodes上运行,而Nodes使用Master公开的Kubernetes API与Master进行通信。最终用户还可以直接使用 Kubernetes 的API与集群交互。

     

    使用Minikube创建本地Kubernetes实验环境

    在大部分情况下,我们需要在本地玩转Kubernetes,以便于Kubernetes应用程序的开发和调测。搭建完整的Kubernetes集群毕竟太重,那么使用Minikube则是不二选择。

    什么是Minikube?

    Minikube 是一个轻量级的Kubernetes实现,会在本机创建一台虚拟机,并部署一个只包含一个节点的简单集群。 Minikube适用于Linux, Mac OS和Windows系统。Minikube CLI提供了集群的基本引导操作,包括启动、停止、状态和删除。

    Minikube的目标是成为本地Kubernetes应用程序开发的最佳工具,并支持所有适合的Kubernetes功能!

    官方GitHub地址:https://github.com/kubernetes/minikube


    Minikube支持的功能

    Minikube支持以下Kubernetes功能:

    • DNS
    • NodePorts(可使用“minikube service”命令来管理)
    • ConfigMaps和Secrets
    • 仪表板(Dashboards,minikube dashboard)
    • 容器运行时:Docker,rktCRI-Ocontainerd
    • Enabling CNI(容器网络接口)
    • Ingress
    • LoadBalancer(负载均衡,可以使用“minikube tunnel”命令来启用)
    • Multi-cluster(多集群,可以使用“minikube start -p <name>”命令来启用)
    • Persistent Volumes
    • RBAC
    • 通过命令配置apiserver和kubelet

    Windows 10下安装

    1.安装要求

    Windows必须支持虚拟化,可以执行“systeminfo”命令来确认。如果支持虚拟化,则【Hyper-V要求】一栏如下图所示:

     

    C:UsersLys_DesktopDocumentsTencent Files512982554ImageC2CM%YWM2VE`R)$F2KF`{~M{LU.jpg

    如果已经装了Hyper-V,则提示如下:

     

    2.启用Hyper-V(推荐)

    可以通过【程序和功能】=》【打开或关闭 Windows 功能】=》勾选【Hyper-V】来启用Hyper-V,也可以通过管理员执行以下Powershell脚本:

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

    如果不支持启用Hyper-V,大家可以安装“VirtualBox”,而且目前“VirtualBox”是官方默认的虚拟机管理程序。

    3.安装Minikube和kubectl

    • 使用Chocolatey安装Minikube(推荐)

    Chocolatey我们前面已经进行了讲解,这里面我们可以使用Chocolatey以管理员身份一键安装Minikube:

    choco install minikube kubernetes-cli

     

    PS C:WINDOWSsystem32> choco install minikube kubernetes-cli

    Chocolatey v0.10.11

    Installing the following packages:

    minikube;kubernetes-cli

    By installing you accept licenses for the packages.

    Minikube v1.1.1 [Approved]

    minikube package files install completed. Performing other installation steps.

    ShimGen has successfully created a shim for minikube.exe

    The install of minikube was successful.

    Software install location not explicitly set, could be in package or

    default install location if installer.

    kubernetes-cli v1.14.3 already installed.

    Use --force to reinstall, specify a version to install, or try upgrade.

    Chocolatey installed 1/2 packages.

    See the log for details (C:ProgramDatachocolateylogschocolatey.log).

    Warnings:

    - kubernetes-cli - kubernetes-cli v1.14.3 already installed.

    Use --force to reinstall, specify a version to install, or try upgrade.

    • 通过下载安装包安装

    下载地址:https://github.com/kubernetes/minikube/releases/

    需下载【minikube-windows-amd64.exe】,下载完成后,需要重命名为“minikube.exe”进行使用。

    4.启动Minikube

    Minikube在Windows上支持使用VirtualBox和Hyper-V,这里我们使用Hyper-V进行实践。

    我们需要执行“minikube start”命令来启动Minikube。这个过程中会下载Minikube ISO镜像,如果Minikube ISO镜像下载失败,可复制链接手工下载或者配置容器代理再试。如果是手工下载,下载后,请将ISO文件放置C:Users<用户名>.minikubecacheiso目录,然后再次执行“start”命令。具体命令如下所示:

    需使用管理员执行以下Powershell脚本:

    minikube.exe start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096

    其中,--registry-mirror参数用于设置镜像服务地址,这里设置为国内镜像服务地址。--vm-driver参数设置了虚拟机类型,这里我们使用Hyper-V,默认是VirtualBox。--memory参数设置了虚拟机内存大小。执行此脚本后,会使用默认的Hyper-V的虚拟交换机,我们也可以使用参数--hyperv-virtual-switch进行指定指定的虚拟网络交换机。虚拟网络交换机设置如下图所示:

     

    在中国,由于网络和防火墙的原因,通常会无法拉取k8s相关镜像或者下载速度过于缓慢,因此,我们可以通过参数--image-repository来设置Minikube使用阿里云镜像。如下列命令:

    minikube.exe start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096 --hyperv-virtual-switch="NET" --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers

     

    PS C:WINDOWSsystem32> minikube.exe start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096 --hyperv-virtual-switch="NET" --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers

    * minikube v1.1.1 on windows (amd64)

    * using image repository registry.cn-hangzhou.aliyuncs.com/google_containers

    * Creating hyperv VM (CPUs=2, Memory=4096MB, Disk=20000MB) ...

    * Configuring environment for Kubernetes v1.14.3 on Docker 18.09.6

    * Pulling images ...

    * Launching Kubernetes ...

    * Verifying: apiserver proxy etcd scheduler controller dns

    * Done! kubectl is now configured to use "minikube"

    成功之后,我们就可以使用kubectl来操作集群了,比如查看当前所有pod的状态:

    kubectl get pods --all-namespaces

     

    刚才我们使用Minikube创建了默认的集群,我们还可以使用Minikube创建新的集群,比如:

    minikube start -p mycluster

    值得注意的是,Minikube搭配Hyper-V使用需要禁用动态内存(Docker for Windows初始化时指定禁用了相关虚拟机使用动态内存),执行Powershell脚本如下所示:

    Set-VMMemory -VMName 'minikube' -DynamicMemoryEnabled $false。

    在Windows 10下,我们还可以使用docker-desktop来启用k8s,不过由于网络的原因,并不是很推荐:

     

    打开Minikube可视化面板

    成功启动Minikube之后,我们就可以通过以下命令来打开Minikube可视化面板:

    minikube dashboard

    启用面板

    PS C:WINDOWSsystem32> minikube dashboard

    * Enabling dashboard ...

    * Verifying dashboard health ...

    * Launching proxy ...

    * Verifying proxy health ...

    * Opening http://127.0.0.1:3173/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/ in your default browser...

     

     

    常见错误

    启动Minikube时提示错误如下:X Unable to start VM: start: exit status 1

    处理方案:执行“minikube delete”或者手工清理时虚拟机目录存在残留内容,需手动删除目录“C:Users{your username} .minikubemachines”后再次尝试。

     

    Linux下安装

    1.安装虚拟机(可选)

    在Linux环境下,Minikube支持直接在主机上运行Kubernetes,因此此步骤为可选。所以大家可以根据实际情况来选择是否安装虚拟机,比如KVM和VirtualBox。

    注意:如果直接在主机上运行,Minikube会运行一个不安全的API Server,可能会导致安全隐患,因此不建议在个人工作环境安装。

    2.安装kubectl

    由于Google网络不太稳定,我们使用阿里云镜像进行安装。

    • CentOS

    echo '#k8s

    [kubernetes]

    name=Kubernetes

    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

    enabled=1

    gpgcheck=0

    '>/etc/yum.repos.d/kubernetes.repo

    #kubeadm和相关工具包

    yum -y install kubelet kubeadm kubectl kubernetes-cni

    • Debian / Ubuntu

    apt-get update && apt-get install -y apt-transport-https

    curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

    echo 'deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main' >/etc/apt/sources.list.d/kubernetes.list

    apt-get update

    apt-get install -y kubelet kubeadm kubectl

    3.安装Minikube

    这里我们直接下载安装:

    curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

    && chmod +x minikube

    由于网络问题,我们可以选择使用阿里云的执行程序:

    curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/latest/minikube-linux-amd64

    && chmod +x minikube

    然后将可执行文件添加到/usr/local/bin目录下

    sudo install minikube /usr/local/bin

    4.启动Minikube

    minikube start --vm-driver=none

    如果存在网络问题,请使用--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers指定镜像仓库地址。

     

    安装过程中如出现问题,可以执行以下命令之后再重新尝试:

    minikube delete

    rm ~/.minikube

    往期内容链接

    Docker最全教程——从理论到实战(一)

    Docker最全教程——从理论到实战(二)

    Docker最全教程——从理论到实战(三)

    Docker最全教程——从理论到实战(四)

    Docker最全教程——从理论到实战(五)

    Docker最全教程——从理论到实战(六)

    Docker最全教程——从理论到实战(七)

    Docker最全教程——从理论到实战(八)

  • 相关阅读:
    关系图的缩放、拖移、边上的关系显示、自定义等
    数据嵌入js的关系图
    十二周周四
    去除mysql里面重复的行并留下id最小的
    十一周周日
    十一周周六
    计算一个字符串中每个词的数量并降序输出
    账户 需求分析
    《人月神话》阅读计划
    读博客,了解本学期《软件需求与分析》掌握必要的内容
  • 原文地址:https://www.cnblogs.com/codelove/p/11163581.html
Copyright © 2011-2022 走看看