学习k8s,分享给大家一个开箱即用的minikube 环境
最近在学习#Kubernetes#, 主要是想打一个基础开发环境, 从最基本、最简单的#minikube#开始搭起吧, 顺便也学习一下搭建过程.谁知道这个minikube 环境, 在目前的国内环境下, 还真是不容易自己从头搭建啊! 记录一下自己的过程, 最后和大家分享一个已经配置好的Minikube 环境, 安装在Virtualbox 里的一个虚拟机, 大家以后可以直接使用, 少走弯路哇!一、 M
最近在学习#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
为了避免文章被盗, 有需要这个虚拟机的,点击关注后, 私信给我, 即可分享给您密码
更多推荐
所有评论(0)