概述
基础环境mac。在mac下的docker中是自带k8s的,但是由于网络原因,安装特别慢,本文介绍社区中另一版本Minikube的安装, 仅做笔记用。
Minikube是由Kubernetes社区维护的单机版的Kubernetes集群,支持macOS, Linux, and Windows等多种操作系统平台。
安装
安装kubectl
测试安装的版本是最新的
1 kubectl version --client
安装Minikube
启动
1 minikube start --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'
查看状态
启动dashboard
使用Minikube
准备开始
本教程提供了从以下文件构建的容器镜像:
server.js
1 2 3 4 5 6 7 8 9 var http = require ('http' );var handleRequest = function (request, response ) { console .log('Received request for URL: ' + request.url); response.writeHead(200 ); response.end('Hello World!' ); }; var www = http.createServer(handleRequest);www.listen(8080 );
Dockerfile
1 2 3 4 FROM node:6.14 .2 EXPOSE 8080 COPY server.js . CMD node server.js
打包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:
查看 Pod:
查看集群事件:
查看 kubectl 配置:
创建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 2 3 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node LoadBalancer 10.102.110.103 <pending> 8080:31863/TCP 47s kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d1h
在支持负载均衡器的云服务提供商上,将提供一个外部 IP 来访问该服务。在 Minikube 上,LoadBalancer 使得服务可以通过命令 minikube service 访问。
运行下面的命令:
1 minikube service hello-node
输出
1 2 3 4 5 6 |-----------|------------|-------------|---------------------------| | NAMESPACE | NAME | TARGET PORT | URL | |-----------|------------|-------------|---------------------------| | default | hello-node | | http://192.168.64.2:31863 | |-----------|------------|-------------|---------------------------| 🎉 正通过默认浏览器打开服务 default/hello-node...
显示有关 Service 的信息
1 kubectl get services hello-node
显示有关 Service 的详细信息
1 kubectl describe services my-service
如果您在 Minikube 上运行服务,您可以通过以下命令找到分配的 IP 地址和端口
1 minikube service hello-node --url
更新版本
1 2 3 docker build -t cuishiying/hello-node:v2 . docker push cuishiying/hello-node:v2 kubectl set image deployment/hello-node hello-node=cuishiying/hello-node:v2
版本回滚
回滚到上一个版本
1 kubectl rollout undo deployment/hello-node
revision
1 2 kubectl rollout history deployment/hello-node kubectl rollout undo deployment/hello-node --to-revision=3
启用插件
Minikube 有一组内置的插件,可以在本地 Kubernetes 环境中启用、禁用和打开。
列出当前支持的插件:
启用插件,例如 heapster
1 minikube addons enable heapster
查看刚才创建的 Pod 和 Service:
1 kubectl get pod,svc -n kube-system
禁用 heapster:
1 minikube addons disable heapster
清理
现在可以清理您在集群中创建的资源:
1 2 kubectl delete service hello-node kubectl delete deployment hello-node
可以停止 Minikube VM:
或者,删除 Minikube VM:
Rancher
安装
1 2 3 docker pull rancher/rancher:latest docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:latest docker logs -f rancher
rancher自签名证书可以在hosts文件配置域名。
1 2 create_self-signed-cert.sh --ssl-domain=rancher.local.com --ssl-trusted-domain=rancher.local.com \ --ssl-trusted-ip=192.168.124.5 --ssl-size=2048 --ssl-date=3650
具体可参考官方文档 安装部分介绍。
rancher导入minikube
导入后的样子是这样的,导入过程比较慢,会显示一直处于 pending
状态, 切莫着急。
用户空间
我们关心的是用户空间,因为我们部署的应用默认在这里
rancher部署应用
之前我们通过k8s部署的 hello-node
先卸载了,重新通过 rancher
部署下应用。 点击右上角 部署服务
。
部署完成后如图。访问 http://192.168.64.2:30001/ 返回 Hello World!
升级应用版本
在刚才的页面点击右边隐藏按钮 升级
,进入升级配置页面。
升级后测试ok。