本文展示如何使用 kubectl port-forward
连接到在 Kubernetes 集群中 运行的 MongoDB 服务。这种类型的连接对数据库调试很有用。
要获知版本信息,请输入 kubectl version
。
kubectl apply -f https://k8s.io/examples/application/mongodb/mongo-deployment.yaml
成功执行的命令的输出可以证明创建了 Deployment:
deployment.apps/mongo created
查看 pod 状态,检查其是否准备就绪:
kubectl get pods
输出显示创建的 pod:
NAME READY STATUS RESTARTS AGE
mongo-75f59d57f4-4nd6q 1/1 Running 0 2m4s
查看 Deployment 状态:
kubectl get deployment
输出显示创建的 Deployment:
NAME READY UP-TO-DATE AVAILABLE AGE
mongo 1/1 1 1 2m21s
该 Deployment 自动管理一个 ReplicaSet。查看该 ReplicaSet 的状态:
kubectl get replicaset
输出显示 ReplicaSet 已被创建:
NAME DESIRED CURRENT READY AGE
mongo-75f59d57f4 1 1 1 3m12s
kubectl apply -f https://k8s.io/examples/application/mongodb/mongo-service.yaml
成功执行的命令的输出可以证明 Service 已经被创建:
service/mongo created
检查所创建的 Service:
kubectl get service mongo
输出显示已被创建的 Service:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mongo ClusterIP 10.96.41.183 <none> 27017/TCP 11s
# 将 mongo-75f59d57f4-4nd6q 改为 Pod 的名称
kubectl get pod mongo-75f59d57f4-4nd6q --template="{{(index (index .spec.containers 0).ports 0).containerPort}}{{"n"}}"
输出应该显示对应 Pod 中 MongoDB 的端口:
27017
27017 是分配给 MongoDB 的互联网 TCP 端口。
kubectl port-forward
允许使用资源名称 (例如 pod 名称)来选择匹配的 pod 来进行端口转发。# 将 mongo-75f59d57f4-4nd6q 改为 Pod 的名称
kubectl port-forward mongo-75f59d57f4-4nd6q 28015:27017
这相当于
kubectl port-forward pods/mongo-75f59d57f4-4nd6q 28015:27017
或者
kubectl port-forward deployment/mongo 28015:27017
或者
kubectl port-forward replicaset/mongo-75f59d57f4 28015:27017
或者
kubectl port-forward service/mongo 28015:27017
以上所有命令都有效。输出类似于:
Forwarding from 127.0.0.1:28015 -> 27017
Forwarding from [::1]:28015 -> 27017
说明:
kubectl port-forward
不会返回。你需要打开另一个终端来继续这个练习。
mongosh --port 28015
ping
命令:db.runCommand( { ping: 1 } )
成功的 ping 请求应该返回:
{ ok: 1 }
如果你不需要指定特定的本地端口,你可以让 kubectl
来选择和分配本地端口, 这样你就不需要管理本地端口冲突。该命令使用稍微不同的语法:
kubectl port-forward deployment/mongo :27017
kubectl
工具会找到一个未被使用的本地端口号(避免使用低段位的端口号, 因为他们可能会被其他应用程序使用)。输出类似于:
Forwarding from 127.0.0.1:63753 -> 27017
Forwarding from [::1]:63753 -> 27017
与本地 28015 端口建立的连接将被转发到运行 MongoDB 服务器的 Pod 的 27017 端口。 通过此连接,你可以使用本地工作站来调试在 Pod 中运行的数据库。
说明:
kubectl port-forward
仅实现了 TCP 端口 支持。 在 issue 47862 中跟踪了对 UDP 协议的支持。
手动轮换CA证书本页展示如何手动轮换证书机构(CA)证书。在开始之前你必须拥有一个Kubernetes的集群,同时你的Kubernetes集群必...
您可以使用任何文本编辑器与命令行工具来构建Flutter应用程序。 不过,我们建议使用我们的编辑器插件之一,以获得更好的体验。通...
云函数的运行环境是 Node.js,我们可以在云函数中使用Nodejs内置模块以及使用 npm 安装第三方依赖来帮助我们更快的开发。借助于...
本指南描述了在安卓模拟器上运行 React Native 安卓应用程序所需要的开发环境的基本安装步骤。在这里我们不讨论诸如 IDE 的开发...
jQuery Mobile 简介jQuery Mobile 是一个用于创建移动端web应用的的前端框架。 学习本教程前你需要先了解 在开始学习 jQuery Mob...
jQuery Mobile 列表视图 jQuery Mobile 列表视图jQuery Mobile 中的列表视图是标准的HTML 列表; 有序(ol) 和 无序(ul).列表视图...
jQuery Mobile 触摸事件 jQuery Mobile提供了可定制的触摸事件,虽然这些事件只有在用户使用支持触摸功能的设备来访问jQuery Mob...
jQuery Mobile 弹窗弹窗是一个非常流行的对话框,弹窗可以覆盖在页面上展示。弹窗可用于显示一段文本,图片,地图或其他内容。创...
在Android中,图像是可绘制资源的一种类型。Android支持另一个可绘制资源,称为可绘制颜色资源,其基本上是颜色矩形。例子要定义...
与SQL一样,Neo4j CQL提供了一个IN运算符,以便为CQL命令提供值的集合。IN操作符语法IN[Collection-of-values]语法说明:S.No.语...