你好,Minikube
说明:
如果你已在本地安装 Minikube,也可以按照本教程操作。 安装指南参阅 minikube start 。
- 将一个示例应用部署到 Minikube。
- 运行应用程序。
- 查看应用日志。
准备开始
本教程提供了容器镜像,使用 NGINX 来对所有请求做出回应。
创建 Minikube 集群
点击 Launch Terminal。
说明:
如果你在本地安装了 Minikube,运行 。 在运行
minikube dashboard
之前,你应该打开一个新终端, 在此启动minikube dashboard
,然后切换回主终端。在浏览器中打开 Kubernetes 仪表板(Dashboard):
仅限 Katacoda 环境:在终端窗口的顶部,单击加号,然后单击 Select port to view on Host 1。
仅限 Katacoda 环境:输入
30000
,然后单击 Display Port。
说明:
dashboard
命令启用仪表板插件,并在默认的 Web 浏览器中打开代理。 你可以在仪表板上创建 Kubernetes 资源,例如 Deployment 和 Service。
如果你以 root 用户身份在环境中运行, 请参见使用 URL 打开仪表板。
默认情况下,仪表板只能从内部 Kubernetes 虚拟网络中访问。 dashboard
命令创建一个临时代理,使仪表板可以从 Kubernetes 虚拟网络外部访问。
要停止代理,请运行 Ctrl+C
退出该进程。仪表板仍在运行中。 命令退出后,仪表板仍然在 Kubernetes 集群中运行。 你可以再次运行 dashboard
命令创建另一个代理来访问仪表板。
如果你不想打开 Web 浏览器,请使用 --url
标志运行显示板命令以得到 URL:
minikube dashboard --url
创建 Deployment
使用
kubectl create
命令创建管理 Pod 的 Deployment。该 Pod 根据提供的 Docker 镜像运行容器。kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080
查看 Deployment:
kubectl get deployments
输出结果类似于这样:
NAME READY 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
命令的更多信息,请参阅 。
创建 Service
默认情况下,Pod 只能通过 Kubernetes 集群中的内部 IP 地址访问。 要使得 hello-node
容器可以从 Kubernetes 虚拟网络的外部访问,你必须将 Pod 暴露为 Kubernetes 。
查看你创建的 Service:
输出结果类似于这样:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-node LoadBalancer 10.108.144.78 <pending> 8080:30369/TCP 21s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23m
运行下面的命令:
minikube service hello-node
仅限 Katacoda 环境:单击加号,然后单击 Select port to view on Host 1。
仅限 Katacoda 环境:请注意在 service 输出中与
8080
对应的长度为 5 位的端口号。 此端口号是随机生成的,可能与你的不同。 在端口号文本框中输入你自己的端口号,然后单击 Display Port。 对应于上面的例子,需要输入30369
。这将打开一个浏览器窗口,为你的应用程序提供服务并显示应用的响应。
Minikube 有一组内置的, 可以在本地 Kubernetes 环境中启用、禁用和打开。
列出当前支持的插件:
minikube addons list
输出结果类似于这样:
addon-manager: enabled
dashboard: enabled
default-storageclass: enabled
efk: disabled
freshpod: disabled
gvisor: disabled
helm-tiller: disabled
ingress: disabled
ingress-dns: disabled
logviewer: disabled
metrics-server: disabled
nvidia-driver-installer: disabled
nvidia-gpu-device-plugin: disabled
registry: disabled
registry-creds: disabled
storage-provisioner: enabled
storage-provisioner-gluster: disabled
启用插件,例如 :
输出结果类似于这样:
查看创建的 Pod 和 Service:
kubectl get pod,svc -n kube-system
输出结果类似于这样:
NAME READY STATUS RESTARTS AGE
pod/coredns-5644d7b6d9-mh9ll 1/1 Running 0 34m
pod/coredns-5644d7b6d9-pqd2t 1/1 Running 0 34m
pod/metrics-server-67fb648c5 1/1 Running 0 26s
pod/etcd-minikube 1/1 Running 0 34m
pod/influxdb-grafana-b29w8 2/2 Running 0 26s
pod/kube-addon-manager-minikube 1/1 Running 0 34m
pod/kube-apiserver-minikube 1/1 Running 0 34m
pod/kube-controller-manager-minikube 1/1 Running 0 34m
pod/kube-proxy-rnlps 1/1 Running 0 34m
pod/kube-scheduler-minikube 1/1 Running 0 34m
pod/storage-provisioner 1/1 Running 0 34m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/metrics-server ClusterIP 10.96.241.45 <none> 80/TCP 26s
service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 34m
service/monitoring-grafana NodePort 10.99.24.54 <none> 80:30002/TCP 26s
service/monitoring-influxdb ClusterIP 10.111.169.94 <none> 8083/TCP,8086/TCP 26s
禁用
metrics-server
:minikube addons disable metrics-server
输出结果类似于这样:
metrics-server was successfully disabled
清理
现在可以清理你在集群中创建的资源:
kubectl delete service hello-node
kubectl delete deployment hello-node
可选地,停止 Minikube 虚拟机(VM):
minikube stop
接下来
- 进一步了解 Deployment 对象。
- 进一步了解。
- 进一步了解 Service 对象。