在你开始之前

本教程提供了从以下档案构建的容器映像:
minikube/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);
minikube/Dockerfile
FROM node:6.14.2
EXPOSE 8080
COPY server.js .
CMD node server.js
有关该docker build命令的更多资讯,请阅读Docker文件。
建立一个Minikube丛集
启动终端minikube start
在浏览器中开启Kubernetes仪表板:minikube dashboard
建立部署
Kubernetes Pod是一组一个或多个容器,用于管理和联网。本教程中的Pod只有一个Container。Kubernetes 部署会检查Pod的执行状况,并在Pod终止时重新启动Pod的容器。部署是管理Pod的建立和扩充套件的推荐方法。使用该kubectl create命令建立管理Pod的Deployment。Pod根据提供的Docker映象执行Container。kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node
检视部署:kubectl get deployments
输出:NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hello-node 1 1 1 1 1m
检视Pod:kubectl get pods
输出:NAME READY STATUS RESTARTS AGE
hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
检视群集事件:kubectl get events
检视kubectl配置:kubectl config view
注意:有关kubectl命令的更多资讯,请参阅kubectl概述。
建立服务
预设情况下,Pod只能通过Kubernetes群集中的内部IP地址访问。要从hello-nodeKubernetes虚拟网络外部访问Container,您必须将Pod公开为Kubernetes 服务。使用以下kubectl expose命令将Pod公开到公共Internet :kubectl expose deployment hello-node --type=LoadBalancer --port=8080
该--type=LoadBalancer标志表示您要在群集外部公开您的服务。检视刚刚建立的服务:kubectl get services
输出:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-node LoadBalancer 10.108.144.78 8080:30369/TCP 21s
kubernetes ClusterIP 10.96.0.1 443/TCP 23m
在支援负载均衡器的云提供商上,将配置外部IP地址以访问服务。在Minikube上,LoadBalancer型别使服务可通过minikube service 命令访问。执行以下命令:minikube service hello-node
启用外挂
Minikube有一组内建外挂,可以在本地Kubernetes环境中启用,禁用和开启。列出当前支援的外挂:minikube addons list
输出:
addon-manager: enabled
coredns: disabled
dashboard: enabled
default-storageclass: enabled
efk: disabled
freshpod: disabled
heapster: disabled
ingress: disabled
kube-dns: enabled
metrics-server: disabled
nvidia-driver-installer: disabled
nvidia-gpu-device-plugin: disabled
registry: disabled
registry-creds: disabled
storage-provisioner: enabled
启用外挂,例如heapster:minikube addons enable heapster
输出:
heapster was successfully enabled
检视刚刚建立的Pod和服务:kubectl get pod,svc -n kube-system
输出:
NAME READY STATUS RESTARTS AGE
pod/heapster-9jttx 1/1 Running 0 26s
pod/influxdb-grafana-b29w8 2/2 Running 0 26s
pod/kube-addon-manager-minikube 1/1 Running 0 34m
pod/kube-dns-6dcb57bcc8-gv7mw 3/3 Running 0 34m
pod/kubernetes-dashboard-5498ccf677-cgspw 1/1 Running 0 34m
pod/storage-provisioner 1/1 Running 0 34m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/heapster ClusterIP 10.96.241.45 80/TCP 26s
service/kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP 34m
service/kubernetes-dashboard NodePort 10.109.29.1 80:30000/TCP 34m
service/monitoring-grafana NodePort 10.99.24.54 80:30002/TCP 26s
service/monitoring-influxdb ClusterIP 10.111.169.94 8083/TCP,8086/TCP 26s
禁用heapster:minikube addons disable heapster
输出:
heapster was successfully disabled
清理
现在,您可以清理在群集中建立的资源:kubectl delete service hello-node
kubectl delete deployment hello-node
(可选)停止Minikube虚拟机器(VM):
minikube stop
(可选)删除Minikube VM:
minikube delete