概述
基础环境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。