Minikube Use Totorials
安装Minikube
环境准备
- Ubuntu16
安装 kubectl
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl kubectl version --client
安装 Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_1.8.0_amd64.deb && sudo dpkg -i minikube_1.8.0_amd64.deb
国内可能无法访问,可以采用阿里源
curl -Lo minikube https://github.com/kubernetes/minikube/releases/download/v1.8.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
配置 Hypervisor
验证您的系统是否启用了虚拟化支持:
egrep -q 'vmx|svm' /proc/cpuinfo && echo yes || echo no
如果上述命令输出“否”:
如果您在虚拟机中运行,那么您的虚拟机监控程序不允许嵌套虚拟化。你需要使用无(裸金属)驱动器
如果您在物理机器上运行,请确保您的BIOS启用了硬件虚拟化
启动 Minikube
sudo minikube start --vm-driver=none --image-repository=registry.aliyuncs.com/google_containers
所需镜像如下
若无法连接谷歌可直接下载以下镜像(要对应版本)
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.17.3 docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.17.3 docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.17.3 docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.17.3 docker pull registry.aliyuncs.com/google_containers/coredns:1.6.5 docker pull registry.aliyuncs.com/google_containers/etcd:3.4.3-0 docker pull registry.aliyuncs.com/google_containers/pause:3.1 docker pull registry.aliyuncs.com/google_containers/storage-provisioner:v1.8.1
Kubernetes 可视化界面
minikube dashboard
访问控制台的连接即可
启动K8s集群
sudo minikube start --vm-driver=none --image-repository=registry.aliyuncs.com/google_containers
启动GUI
minikube dashboard
K8s 部署应用程序
Server.js
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
FROM node:6.9.2 EXPOSE 8080 COPY server.js . CMD node Server.js
打包镜像
docker build -t hello-node:v1 .
部署应用
kubectl run hello-node --image=hello-node:v1 --port=8080
查看Deployment:
kubectl get deployments
输出:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE hello-node 1 1 1 1 3m
查看Pod:
kubectl get pods
输出:
NAME READY STATUS RESTARTS AGE hello-node-714049816-ztzrb 1/1 Running 0 6m
查看群集events:
kubectl get events
查看kubectl配置:
kubectl config view
创建Service
默认情况,这Pod只能通过Kubernetes群集内部IP访问。要使hello-node容器从Kubernetes虚拟网络外部访问,须要使用Kubernetes Service暴露Pod。
我们可以使用kubectl expose命令将Pod暴露到外部环境:
kubectl expose deployment hello-node --type=LoadBalancer
查看刚创建的Service:
kubectl get services
输出:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node 10.0.0.71 <pending 8080/TCP 6m kubernetes 10.0.0.1 <none 443/TCP 14d
通过--type=LoadBalancer flag来在群集外暴露Service,在支持负载均衡的云提供商上,将配置外部IP地址来访问Service。在Minikube上,该LoadBalancer type使服务可以通过minikube Service 命令访问。
minikube service hello-node
将打开浏览器,在本地IP地址为应用提供服务,显示“Hello World”的消息。
最后可以查看到一些日志
kubectl logs <POD-NAME >
K8s 更新应用程序
编辑server.js文件以返回新消息:
response.end('Hello World Again!');
build新版本镜像
docker build -t hello-node:v2 .
Deployment更新镜像:
kubectl set image deployment/hello-node hello-node=hello-node:v2
再次运行应用以查看新消息:
minikube service hello-node
删除 K8s 集群
现在可以删除在群集中创建的资源:
kubectl delete service hello-node
kubectl delete deployment hello-node
或者停止Minikube:
minikube stop
K8s kubectl 命令表
[kubectl命令列表]
参考资料
Github代码库:https://github.com/AliyunContainerService/minikube)
参考博文:https://yq.aliyun.com/articles/221687)
官方文档:https://minikube.sigs.k8s.io/docs/start/
合群是堕落的开始 优秀的开始是孤行