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/
原文地址:https://www.cnblogs.com/biaogejiushibiao/p/12591788.html