龙空技术网

学习k8s,分享给大家一个开箱即用的minikube 环境

爱编程的查理 347

前言:

当前看官们对“centos mini”大体比较关注,朋友们都需要剖析一些“centos mini”的相关知识。那么小编也在网络上网罗了一些有关“centos mini””的相关知识,希望小伙伴们能喜欢,你们快快来学习一下吧!

最近在学习#Kubernetes#, 主要是想打一个基础开发环境, 从最基本、最简单的#minikube#开始搭起吧, 顺便也学习一下搭建过程.

谁知道这个minikube 环境, 在目前的国内环境下, 还真是不容易自己从头搭建啊! 记录一下自己的过程, 最后和大家分享一个已经配置好的Minikube 环境, 安装在Virtualbox 里的一个虚拟机, 大家以后可以直接使用, 少走弯路哇!

一、 Minikube 简介

#minikube#是一种可以在本地轻松运行Kubernetes的工具。minikube在笔记本电脑的VM中运行单节点Kubernetes集群,供希望尝试Kubernetes或日常开发的用户测试使用。特点是不能启动生产集群,没有高可用性的单节点机器。

使用Minikube CLI管理虚拟机上的Kubernetes环境,比如:启动,停止,删除,获取状态等。

Minikube 实际上就是在本机启动一个虚拟环境, 在虚拟环境里面安装Kubernetes 的各种组件

二、minikube 搭建过程以及遇到的各种坑

在本机(Macbook Pro , macOS 11.2.2) 上安装minikube, 真是遇到了各种坑! 感觉最主要的是, 在当前国内的环境下, 是无法访问谷歌的一些地址, 尤其是各种repository源, 这就造成安装上的困难!

而且, 国内的文档吧, 参差不齐, 没有一个特别好的、系统性强的文档供参考, 可能是我没有找到特别合适的文档, 但是从百度上搜到的文档, 大多如此, 只言片语居多.

下载minikube 没啥难度, homebrew 就搞定了:

brew install minikube

按说, 对于Minikube , 目前最简单的应该是使用Docker 作为driver, 也就是在启动Minikube 时候, 指定:

minikube start --driver=docker

但是不知道为啥, 我Mac上面的Docker Desktop , 在启动Kubernetes 时候始终是失败的, 原因尚未查明, 毕竟对于K8S的理解和使用还不是那么深入......

所以, 我在启动minikube 的时候, 指定了virtualbox:

minikube start --driver=virtualbox

这个时候, 主要是提示访问不了谷歌的image 源k8s.gcr.io.

现在国内形势如此, 对于外网的访问就是艰难, 也不排除国外的"卡脖子"的因素, 作为一名程序员也只能是默默打开公司的vpn, 但是在实际运行的时候, 使用vpn 方案也不太行得通, 里面会提示说api server 没有启动, 导致最后的失败.

折腾很久, 就是在这个VM 里面安装Kubernetes 的时候, 兜兜转转, 错误很多, 实在是令人气馁.

三、开箱即用的Minikube 环境介绍

最后没办法, 看着Virtualbox 里面的这个VM, 心想别人应该有分享的VM 吧, 于是到Vagrant Box 市场里面搜索了一下,还真的是有, 那就不自己折腾了, 下载下来直接用现成的吧!

Box 市场上的这个环境, 源代码是在Github 的这个位置:

Q24/vagrant-box-centos7-minikube

作者在基于Centos 7 精简版之上, 配置了minikube 的环境, 虚拟机里面已经安装有:

ansibleminikubedockerhelmkubectlkubetail

我们作为Vagrant 的终端用户, 只需要下载这个Vagrantfile 就好了, 这是我在本机启动好之后的界面, 增加了GNOME 桌面.

在使用默认的vagrant 账号和密码登录VM 之后, 启用桌面环境即可:

startx

minikube 桌面

简单检查一下, 可以看到minikube 的状态是正常而且完整的:

minikube status

minikube status

Minikube的dashboard 也很简单的打开:

minikube dashboard
四、通过hello world来快速学习

首先, 学习下怎么把一个应用部署到Kubernetes中.

Question: 将应用部署到kubernetes需要几个步骤?

Answer: 在kubernetes中部署应用,首先需要将应用做成镜像,然后才能部署在kubernetes中。

所以:

创建一个镜像需要一个镜像仓库用来存放镜像编写kubernetes的deployment文件将镜像部署成为pod编写kubernetes的service文件,创建pod的服务,并对外暴露端口

将应用部署到kubernetes

来一个Hello world的小例子, 动手练一下:

        apiVersion: apps/v1        kind: Deployment        metadata:          name: hello-world        spec:          selector:            matchLabels:              run: load-balancer-example          replicas: 2          template:            metadata:              labels:                run: load-balancer-example            spec:              containers:                - name: hello-world                  image: registry.cn-hangzhou.aliyuncs.com/aliyun_google/google-sample-node-hello:1.0                  ports:                    - containerPort: 8080                      protocol: TCP

该文件简单描述了一个k8s deployment 资源的属性, 包含一个deployment, 一个replicaSets 每一个replicaSets 包含两个Pod.

每个Pod中运行一个容器, 容器的镜像源是

registry.cn-hangzhou.aliyuncs.com/aliyun_google/google-sample-node-hello:1.0, 容器端口8080.

启动应用

保存该文件为 hello-application.yaml, 运行如下命令:

kubectl apply -f ./hello-application.yaml 

查看deploymen 状态如下:

kubectl get deployment

kubectl get deployment

暴露应用访问入口

运行如下命令 服务暴露方式为NodePort

 kubectl expose deployment hello-world --type NodePort --name node-service

查看node-service:

kubectl get service node-service

kubectl get service node-service

kubectl describe service node-service

kubectl describe service node-service

可以看到 服务通过33557 端口映射到容器的8080端口,这样我们就可以通过 33557端口访问容器内的web应用了. 如下响应正常

浏览器访问

五 虚拟机分享

最后, 直接把我本地的这个Virtualbox 虚拟机分享给大家吧, 使用虚拟机可以免去配置环境的过程, 加快学习的脚步!

文件3.7G 左右, 可以直接在某度云盘下载:

链接:

为了避免文章被盗, 有需要这个虚拟机的,点击关注后, 私信给我, 即可分享给您密码

标签: #centos mini