最近在学习#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

在能够访问gcr.io的情况下, 下载速度还是挺快的, 相关镜像飞速下载下来

 

当然,如果没法访问上述网站的, 也可以使用virtualbox, 在虚拟机里面加载minikube 环境,

Vagrant Box 市场里面搜索了一下,还真的是有, 那就不自己折腾了, 下载下来直接用现成的吧!

Box 市场上的这个环境, 源代码是在Github 的这个位置:
https://github.com/Q24/vagrant-box-centos7-minikube

 

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

  • ansible
  • minikube
  • docker
  • helm
  • kubectl
  • kubetail

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

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

startx

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

minikube status

 log 输出:

% minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

Minikube的dashboard 也很简单的打开:

minikube dashboard

四、通过hello world来快速学习

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

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

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

所以:

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

 来一个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

暴露应用访问入口
运行如下命令 服务暴露方式为NodePort

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

 

查看node-service:

kubectl get service node-service

查看这个Service 的详细情况:

 

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

五 虚拟机分享

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

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

链接:
https://pan.baidu.com/s/1pq-sYaWEUOxNipUqnRbp7A

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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐