Black lives matter.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
本教程向您展示如何使用 Minikube 和 Katacoda 在 Kubernetes 上运行一个简单的 “Hello World” Node.js 应用程序。Katacoda 提供免费的浏览器内 Kubernetes 环境。
注意: 如果您已在本地安装 [Minikube](/zh/docs/tasks/tools/install-minikube/),也可以按照本教程操作。
本教程提供了从以下文件构建的容器镜像:
minikube/server.js
|
---|
|
minikube/Dockerfile
|
---|
|
有关 docker build
命令的更多信息,请参阅 Docker 文档。
点击 启动终端
注意: If you installed Minikube locally, runminikube start
.
在浏览器中打开 Kubernetes dashboard:
minikube dashboard
仅限 Katacoda 环境:在终端窗口的顶部,单击加号,然后单击 选择要在主机 1 上查看的端口。
仅限 Katacoda 环境:输入“30000”,然后单击 显示端口。
Kubernetes Pod 是由一个或多个为了管理和联网而绑定在一起的容器构成的组。本教程中的 Pod 只有一个容器。Kubernetes Deployment 检查 Pod 的健康状况,并在 Pod 中的容器终止的情况下重新启动新的容器。Deployment 是管理 Pod 创建和扩展的推荐方法。
使用 kubectl create
命令创建管理 Pod 的 Deployment。该 Pod 根据提供的 Docker 镜像运行 Container。
kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
查看 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 config view
注意: 有关 kubectl 命令的更多信息,请参阅 kubectl 概述。
默认情况下,Pod 只能通过 Kubernetes 集群中的内部 IP 地址访问。要使得 hello-node
容器可以从 Kubernetes 虚拟网络的外部访问,您必须将 Pod 暴露为 Kubernetes Service。
使用 kubectl expose
命令将 Pod 暴露给公网:
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.
查看您刚刚创建的服务:
kubectl get services
输出结果类似于这样:
```
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
```
在支持负载均衡器的云服务提供商上,将提供一个外部 IP 来访问该服务。在 Minikube 上,LoadBalancer
使得服务可以通过命令 minikube service
访问。
运行下面的命令:
minikube service hello-node
仅限 Katacoda 环境:请注意在 service 输出中与 8080
对应的长度为 5 位的端口号。此端口号是随机生成的,可能与您不同。在端口号文本框中输入您自己的端口号,然后单击显示端口。如果是上面那个例子,就需要输入 30369
。
这将打开一个浏览器窗口,为您的应用程序提供服务并显示 “Hello World” 消息。
Minikube 有一组内置的 插件Resources that extend the functionality of Kubernetes. ,可以在本地 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
```
启用插件,例如 metrics-server
:
minikube addons enable metrics-server
输出结果类似于这样:
```
metrics-server was successfully enabled
```
查看刚才创建的 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
可选的,删除 Minikube 虚拟机(VM):
minikube delete