概述
基础环境mac。在mac下的docker中是自带k8s的,但是由于网络原因,安装特别慢,本文介绍社区中另一版本Minikube的安装, 仅做笔记用。
Minikube是由Kubernetes社区维护的单机版的Kubernetes集群,支持macOS, Linux, and Windows等多种操作系统平台。
安装
安装kubectl
1 | brew install kubectl |
测试安装的版本是最新的
1 | kubectl version --client |
安装Minikube
1 | brew install minikube |
启动
1 | minikube start --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' |
查看状态
1 | minikube status |
启动dashboard
1 | minikube dashboard |
使用Minikube
准备开始
本教程提供了从以下文件构建的容器镜像:
server.js
1 | var http = require('http'); |
Dockerfile
1 | FROM node:6.14.2 |
打包docker镜像
- 打包指令,注意.
1 | docker build -t cuishiying/hello-node:v1 . |
- 本地测试镜像是否ok
1 | docker run -d -p 8080:8080 cuishiying/hello-node:v1 |
访问 http://localhost:8080/ 返回 Hello World!。
- login后把镜像推送到仓库
1 | docker push cuishiying/hello-node:v1 |
创建Deployment
Kubernetes Pod 是由一个或多个为了管理和联网而绑定在一起的容器构成的组。本教程中的 Pod 只有一个容器。Kubernetes Deployment 检查 Pod 的健康状况,并在 Pod 中的容器终止的情况下重新启动新的容器。Deployment 是管理 Pod 创建和扩展的推荐方法。
- 使用 kubectl create 命令创建管理 Pod 的 Deployment。该 Pod 根据提供的 Docker 镜像运行 Container。
1 | kubectl create deployment hello-node --image=cuishiying/hello-node:v1 |
- 查看 Deployment:
1 | kubectl get deployments |
- 查看 Pod:
1 | kubectl get pods |
- 查看集群事件:
1 | kubectl get events |
- 查看 kubectl 配置:
1 | kubectl config view |
创建Service
默认情况下,Pod 只能通过 Kubernetes 集群中的内部 IP 地址访问。要使得 hello-node 容器可以从 Kubernetes 虚拟网络的外部访问,您必须将 Pod 暴露为 Kubernetes Service。
- 使用 kubectl expose 命令将 Pod 暴露给公网:
1 | kubectl expose deployment hello-node --type=LoadBalancer --port=8080 |
The --type=LoadBalancer flag indicates that you want to expose your Service outside of the cluster.
- 查看您刚刚创建的服务:
1 | kubectl get services |
输出
1 | NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE |
在支持负载均衡器的云服务提供商上,将提供一个外部 IP 来访问该服务。在 Minikube 上,LoadBalancer 使得服务可以通过命令 minikube service 访问。
- 运行下面的命令:
1 | minikube service hello-node |
输出
1 | |-----------|------------|-------------|---------------------------| |
- 显示有关 Service 的信息
1 | kubectl get services hello-node |
- 显示有关 Service 的详细信息
1 | kubectl describe services my-service |
- 如果您在 Minikube 上运行服务,您可以通过以下命令找到分配的 IP 地址和端口
1 | minikube service hello-node --url |
更新版本
1 | docker build -t cuishiying/hello-node:v2 . |
版本回滚
回滚到上一个版本
1 | kubectl rollout undo deployment/hello-node |
revision
1 | kubectl rollout history deployment/hello-node |
启用插件
Minikube 有一组内置的插件,可以在本地 Kubernetes 环境中启用、禁用和打开。
- 列出当前支持的插件:
1 | minikube addons list |
- 启用插件,例如 heapster
1 | minikube addons enable heapster |
- 查看刚才创建的 Pod 和 Service:
1 | kubectl get pod,svc -n kube-system |
- 禁用 heapster:
1 | minikube addons disable heapster |
清理
现在可以清理您在集群中创建的资源:
1 | kubectl delete service hello-node |
可以停止 Minikube VM:
1 | minikube stop |
或者,删除 Minikube VM:
1 | minikube delete |
Rancher
- 安装
1 | docker pull rancher/rancher:latest |
rancher自签名证书可以在hosts文件配置域名。
1 | create_self-signed-cert.sh --ssl-domain=rancher.local.com --ssl-trusted-domain=rancher.local.com \ |
具体可参考官方文档 安装部分介绍。
- rancher导入minikube

导入后的样子是这样的,导入过程比较慢,会显示一直处于 pending 状态, 切莫着急。

- 用户空间
我们关心的是用户空间,因为我们部署的应用默认在这里

- rancher部署应用
之前我们通过k8s部署的 hello-node 先卸载了,重新通过 rancher 部署下应用。 点击右上角 部署服务。

部署完成后如图。访问 http://192.168.64.2:30001/ 返回 Hello World!

- 升级应用版本
在刚才的页面点击右边隐藏按钮 升级,进入升级配置页面。

升级后测试ok。