使用KVM在CentOS 8 / CentOS 7上安装Minikube Kubernetes

编写本教程是为了帮助您使用KVM Hypervisor在CentOS 8 / CentOS 7上安装Minikube。 Minikube是一个开放源代码工具,旨在使开发人员和系统管理员可以在几分钟内引导本地计算机(笔记本电脑,台式机)上的单节点Kubernetes集群。它是开发和POC的理想选择,但不适合运行生产工作负载。

有关在Ubuntu / Debian Linux系统上安装Minikube的信息,请参见如何在Ubuntu / Debian Linux上安装Minikube。简而言之,Minikube打包并配置了Linux VM,并安装了Docker和所有Kubernetes组件。通过在主机系统上运行的kubectl管理和部署应用程序。

Kubernetes支持的功能

Minikube上运行的Kubernetes可以执行的一些功能包括:

  • 域名解析
  • 节点端口
  • ConfigMap和秘密
  • 仪表板
  • 容器运行时:Docker, CRI-O货柜
  • 启用CNI(容器网络接口)
  • 入口
  • 持久性类型 hostPath

Minikube支持VirtualBox和KVM虚拟机管理程序,但本指南适用于在CentOS 8 / CentOS 7 Linux计算机上使用KVM运行Minikube。

步骤1:更新系统

运行以下命令以将所有系统软件包更新到最新版本。

sudo yum -y update

步骤2:安装KVM虚拟机监控程序

如上所述,我们将KVM用作Minikube VM的管理程序。这是在CentOS / RHEL 8上安装KVM的完整指南:

如何在RHEL 8 / CentOS 8 Linux上安装KVM

在CentOS 7上安装KVM

验证libvirtd服务正在运行。

$ systemctl status libvirtd
● libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-01-20 14:33:07 EAT; 1s ago
     Docs: man:libvirtd(8)
           https://libvirt.org
 Main PID: 20569 (libvirtd)
    Tasks: 20 (limit: 32768)
   Memory: 70.4M
   CGroup: /system.slice/libvirtd.service
           ├─ 2653 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
           ├─ 2654 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
           └─20569 /usr/sbin/libvirtd

Jan 20 14:33:07 cent8.localdomain systemd[1]: Starting Virtualization daemon...
Jan 20 14:33:07 cent8.localdomain systemd[1]: Started Virtualization daemon.
Jan 20 14:33:08 cent8.localdomain dnsmasq[2653]: read /etc/hosts - 2 addresses
Jan 20 14:33:08 cent8.localdomain dnsmasq[2653]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 addresses
Jan 20 14:33:08 cent8.localdomain dnsmasq-dhcp[2653]: read /var/lib/libvirt/dnsmasq/default.hostsfile

如果安装后它没有运行,请启动它并将其配置为在引导时启动。

sudo systemctl enable --now libvirtd

您必须是用户的一部分 libvirt 组。

sudo usermod -a -G libvirt $(whoami)
newgrp libvirt

打开文件/etc/libvirt/libvirtd.conf进行编辑。

sudo vi /etc/libvirt/libvirtd.conf

将UNIX域套接字组的所有权设置为libvirt(每行) 85

unix_sock_group = "libvirt"

为R / W套接字设置UNIX套接字权限 102

unix_sock_rw_perms = "0770"

进行更改后,重新启动libvirt守护程序。

sudo systemctl restart libvirtd.service

步骤3:下载minikube

您需要下载minikube二进制文件。二进制文件位于/ usr / local / bin目录下。 $路径

sudo yum -y install wget
wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube

检查系统上Minikube的安装。

$ minikube version
minikube version: v1.6.2
commit: 54f28ac5d3a815d1196cd5d57d707439ee4bb392

步骤4:安装kubectl

您需要kubectl,一种用于在Kubernetes中部署和管理应用程序的命令行工具。

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl

指定文件的可执行位,然后导航到PATH中的某个位置。

chmod +x kubectl
sudo mv kubectl  /usr/local/bin/

检查安装的kubectl版本。

$ kubectl version -o json
 {
   "clientVersion": {
     "major": "1",
     "minor": "17",
     "gitVersion": "v1.17.1",
     "gitCommit": "d224476cd0730baca2b6e357d144171ed74192d6",
     "gitTreeState": "clean",
     "buildDate": "2020-01-14T21:04:32Z",
     "goVersion": "go1.13.5",
     "compiler": "gc",
     "platform": "linux/amd64"
   }
 }

步骤5:启动miniminikube

现在已经安装了组件,您可以启动minikube。已为Kubernetes单节点集群下载并配置了VM映像。

有关选项的列表,请执行以下操作:

$ minikube start --help

要使用默认选项创建minikube VM:

$ minikube start

使用的默认容器运行时为 码头工人 但是,您也可以使用crio或容器式。

$ minikube start --container-runtime=cri
$ minikube start --container-runtime=containerd

安装程序将自动检测KVM并下载KVM驱动程序。

* minikube v1.6.2 on Centos 8.1.1911
* Automatically selected the 'kvm2' driver (alternates: [none])
* Downloading driver docker-machine-driver-kvm2:
    > docker-machine-driver-kvm2.sha256: 65 B / 65 B [-------] 100.00% ? p/s 0s
    > docker-machine-driver-kvm2: 13.86 MiB / 13.86 MiB  100.00% 791.09 KiB p/s
* Downloading VM boot image ...

如果您有多个管理程序,请指定它们。

$ minikube start --vm-driver kvm2

请注意,您已安装了最新的Kubernetes稳定版本。使用方法 --kubernetes-version 指定要安装版本的标志。范例:

--kubernetes-version='1.16.5'

等待下载和设置完成,然后确认一切正常。

$ minikube start
* minikube v1.6.2 on Centos 8.1.1911
* Automatically selected the 'kvm2' driver (alternates: [none])
* Downloading driver docker-machine-driver-kvm2:
    > docker-machine-driver-kvm2.sha256: 65 B / 65 B [-------] 100.00% ? p/s 0s
    > docker-machine-driver-kvm2: 13.86 MiB / 13.86 MiB  100.00% 791.09 KiB p/s
* Downloading VM boot image ...
    > minikube-v1.6.0.iso.sha256: 65 B / 65 B [--------------] 100.00% ? p/s 0s
    > minikube-v1.6.0.iso: 150.93 MiB / 150.93 MiB [] 100.00% 1.27 MiB p/s 2m0s
* Creating kvm2 VM (CPUs=2, Memory=2000MB, Disk=20000MB) ...
* Preparing Kubernetes v1.17.0 on Docker '19.03.5' ...
* Downloading kubelet v1.17.0
* Downloading kubeadm v1.17.0
* Pulling images ...
* Launching Kubernetes ... 
* Waiting for cluster to come online ...
* Done! kubectl is now configured to use "minikube"

步骤6:Minikube的基本操作

Kubectl 命令行工具设置为使用“ minikube”。

要检查集群的状态:

$ kubectl cluster-info
Kubernetes master is running at https://192.168.39.2:8443
KubeDNS is running at https://192.168.39.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

Minikube配置文件可以在下面找到 〜/ .minikube /机器/ minikube / config.json

要查看配置,请使用:

$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority: /home/jkmutai/.minikube/ca.crt
    server: https://192.168.39.2:8443
  name: minikube
contexts:
- context:
    cluster: minikube
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: /home/jkmutai/.minikube/client.crt
    client-key: /home/jkmutai/.minikube/client.key

要查看正在运行的节点:

$ kubectl get nodes
NAME       STATUS   ROLES    AGE     VERSION
minikube   Ready    master   2m58s   v1.17.0

使用ssh访问minikube VM。

$ minikube ssh

                         _             _            
            _         _ ( )           ( )           
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __  
/' _ ` _ `| |/' _ `| || , <  ( ) ( )| '_`  /'__`
| ( ) ( ) || || ( ) || || |` | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`___/'(_,__/'`____)

$ sudo su -

要停止正在运行的本地kubernetes集群:

$ minikube stop
* Stopping "minikube" in kvm2 ...
* "minikube" stopped.

要启动VM:

$ minikube start
* minikube v1.6.2 on Centos 8.1.1911
* Selecting 'kvm2' driver from existing profile (alternates: [none])
* Tip: Use 'minikube start -p ' to create a new cluster, or 'minikube delete' to delete this one.
* Starting existing kvm2 VM for "minikube" ...
* Waiting for the host to be provisioned ...
* Preparing Kubernetes v1.17.0 on Docker '19.03.5' ...
* Launching Kubernetes ... 
* Done! kubectl is now configured to use "minikube"

要删除本地kubernetes集群,请使用:

$ minikube delete

步骤7:启用Kubernetes仪表板

Web附带Kubernetes 仪表板 这使您无需与命令行交互即可管理集群。仪表盘插件在minikube上默认安装并启用。

$ minikube addons list

- addon-manager: enabled
- coredns: disabled
- dashboard: enabled
- default-storageclass: enabled
- efk: disabled
- freshpod: disabled
- heapster: disabled
- ingress: disabled
- kube-dns: enabled
- metrics-server: disabled
- registry: disabled
- registry-creds: disabled
- storage-provisioner: enabled

要直接在默认浏览器中打开它,请使用:

$ minikube dashboard

获取仪表板URL

$ minikube dashboard --url
http://192.168.39.117:30000

在您喜欢的浏览器中打开URL以访问Kubernetes仪表板。要了解更多信息,请检查以下内容:

其他Kubernetes指南

如何在Kubernetes控制平面(主节点)上调度Pod

如何将新的Kubernetes工作者节点加入现有集群

使用Ansible和Calico CNI在CentOS 7 / CentOS 8上部署Kubernetes集群

如何将指标服务器部署到Kubernetes集群

如何手动提取Kubernetes kubeadm使用的容器映像

在Kubernetes集群上安装和使用Helm 3

Sidebar