Kubernetes---使用端口转发来访问集群中的应用

使用端口转发来访问集群中的应用


准备工作:

1.你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。
2.安装 MongoDB Shell

此处我的环境为CentOS7,故选择正确的操作系统。
在这里插入图片描述

一、创建 MongoDB Deployment 和服务

1.创建一个运行 MongoDB 的 Deployment:

[root@master mongodb]# pwd
/home/app/k8s/mongodb
[root@master mongodb]# ls
mongodb-mongosh-shared-openssl11-1.5.4.x86_64.rpm  mongo-deployment.yaml  mongo-service.yaml
[root@master mongodb]# cat mongo-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo
  labels:
    app.kubernetes.io/name: mongo
    app.kubernetes.io/component: backend
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: mongo
      app.kubernetes.io/component: backend
  replicas: 1
  template:
    metadata:
      labels:
        app.kubernetes.io/name: mongo
        app.kubernetes.io/component: backend
    spec:
      containers:
      - name: mongo
        image: mongo:4.2
        args:
          - --bind_ip
          - 0.0.0.0
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 27017

执行创建指令:

[root@master mongodb]# kubectl apply -f mongo-deployment.yaml
deployment.apps/mongo created  # 成功执行的命令的输出可以证明创建了 Deployment
[root@master mongodb]# kubectl get pods  # 查看 Pod 状态,检查其是否准备就绪
NAME                                      READY   STATUS        RESTARTS        AGE
mongo-7bd6cfb5b8-dwk6h                    1/1     Running       0               43s
nfs-client-provisioner-6f48556457-7lrz4   1/1     Running       4 (6m50s ago)   3h5m
nfs-client-provisioner-6f48556457-gbvfp   1/1     Terminating   1               20d
[root@master mongodb]# kubectl get deployment # 查看 Deployment 状态
NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
mongo                    1/1     1            1           52s
nfs-client-provisioner   1/1     1            1           20d
[root@master mongodb]# kubectl get replicaset # 该 Deployment 自动管理一个 ReplicaSet。查看该 ReplicaSet 的状态
NAME                                DESIRED   CURRENT   READY   AGE
mongo-7bd6cfb5b8                    1         1         1       67s
nfs-client-provisioner-6f48556457   1         1         1       20d
# 输出显示 ReplicaSet 已被创建

2.创建一个在网络上公开的 MongoDB 服务:

yaml文件:

[root@master mongodb]# cat mongo-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: mongo
  labels:
    app.kubernetes.io/name: mongo
    app.kubernetes.io/component: backend
spec:
  ports:
  - port: 27017
    targetPort: 27017
  selector:
    app.kubernetes.io/name: mongo
    app.kubernetes.io/component: backend

进行创建:

[root@master mongodb]# kubectl apply -f mongo-service.yaml
service/mongo created  # 成功执行的命令的输出可以证明 Service 已经被创建

检查所创建的 Service:

[root@master mongodb]# kubectl get service mongo
NAME    TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)     AGE
mongo   ClusterIP   10.98.5.153   <none>        27017/TCP   7s
# 输出显示已被创建的 Service

验证 MongoDB 服务是否运行在 Pod 中并且在监听 27017 端口:

[root@master mongodb]# kubectl get pod mongo-7bd6cfb5b8-dwk6h --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'  
27017
# 将 mongo-7bd6cfb5b8-dwk6h 改为你自己创建的 Pod 名称,此处的为我创建的pod。
# 27017 是分配给 MongoDB 的互联网 TCP 端口。

二、转发一个本地端口到 Pod 端口

kubectl port-forward 允许使用资源名称 (例如 Pod 名称)来选择匹配的 Pod 来进行端口转发。

[root@master mongodb]# kubectl port-forward mongo-7bd6cfb5b8-dwk6h 28015:27017 # 此处pod名称也要换成自己的pod名
# 以上所有命令都有效。输出类似于:
Forwarding from 127.0.0.1:28015 -> 27017
Forwarding from [::1]:28015 -> 27017

kubectl port-forward 不会返回,所以我们重新打开一个新的终端,进行MongoDB Shell的安装和测试。

三、安装MongoDB Shell,进行测试

1.将下载好的rpm包上传到本地,使用yum或rpm进行安装:

[root@master mongodb]# ls
mongodb-mongosh-shared-openssl11-1.5.4.x86_64.rpm  mongo-deployment.yaml  mongo-service.yaml
[root@master mongodb]# yum -y install mongodb-mongosh-shared-openssl11-1.5.4.x86_64.rpm
Loaded plugins: fastestmirror, langpacks, product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

Examining mongodb-mongosh-shared-openssl11-1.5.4.x86_64.rpm: mongodb-mongosh-shared-openssl11-1.5.4-1.el8.x86_64
Marking mongodb-mongosh-shared-openssl11-1.5.4.x86_64.rpm to be installed
Resolving Dependencies
There are unfinished transactions remaining. You might consider running yum-complete-transaction, or "yum-complete-transaction --cleanup-only" and "yum history redo last", first to finish them. If those don't work you'll have to try removing/installing packages by hand (maybe package-cleanup can help).
--> Running transaction check
---> Package mongodb-mongosh-shared-openssl11.x86_64 0:1.5.4-1.el8 will be installed
--> Processing Dependency: libcrypto.so.1.1(OPENSSL_1_1_0)(64bit) for package: mongodb-mongosh-shared-openssl11-1.5.4-1.el8.x86_64
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * epel: mirror.01link.hk
 * extras: mirrors.aliyun.com
 * updates: mirrors.njupt.edu.cn
--> Processing Dependency: libcrypto.so.1.1(OPENSSL_1_1_0g)(64bit) for package: mongodb-mongosh-shared-openssl11-1.5.4-1.el8.x86_64
--> Processing Dependency: libcrypto.so.1.1(OPENSSL_1_1_1)(64bit) for package: mongodb-mongosh-shared-openssl11-1.5.4-1.el8.x86_64
--> Processing Dependency: libcrypto.so.1.1(OPENSSL_1_1_1b)(64bit) for package: mongodb-mongosh-shared-openssl11-1.5.4-1.el8.x86_64
--> Processing Dependency: libcrypto.so.1.1(OPENSSL_1_1_1e)(64bit) for package: mongodb-mongosh-shared-openssl11-1.5.4-1.el8.x86_64
--> Processing Dependency: libssl.so.1.1(OPENSSL_1_1_0)(64bit) for package: mongodb-mongosh-shared-openssl11-1.5.4-1.el8.x86_64
--> Processing Dependency: libssl.so.1.1(OPENSSL_1_1_1)(64bit) for package: mongodb-mongosh-shared-openssl11-1.5.4-1.el8.x86_64
--> Processing Dependency: libcrypto.so.1.1()(64bit) for package: mongodb-mongosh-shared-openssl11-1.5.4-1.el8.x86_64
--> Processing Dependency: libssl.so.1.1()(64bit) for package: mongodb-mongosh-shared-openssl11-1.5.4-1.el8.x86_64
--> Running transaction check
---> Package openssl11-libs.x86_64 1:1.1.1k-4.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================================================================================
 Package                                      Arch               Version                      Repository                                                  Size
===============================================================================================================================================================
Installing:
 mongodb-mongosh-shared-openssl11             x86_64             1.5.4-1.el8                  /mongodb-mongosh-shared-openssl11-1.5.4.x86_64             199 M
Installing for dependencies:
 openssl11-libs                               x86_64             1:1.1.1k-4.el7               epel                                                       1.5 M

Transaction Summary
===============================================================================================================================================================
Install  1 Package (+1 Dependent package)

Total size: 201 M
Total download size: 1.5 M
Installed size: 203 M
Downloading packages:
openssl11-libs-1.1.1k-4.el7.x86_64.rpm                                                                                                  | 1.5 MB  00:00:07
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 1:openssl11-libs-1.1.1k-4.el7.x86_64                                                                                                        1/2
  Installing : mongodb-mongosh-shared-openssl11-1.5.4-1.el8.x86_64                                                                                         2/2
  Verifying  : 1:openssl11-libs-1.1.1k-4.el7.x86_64                                                                                                        1/2
  Verifying  : mongodb-mongosh-shared-openssl11-1.5.4-1.el8.x86_64                                                                                         2/2

Installed:
  mongodb-mongosh-shared-openssl11.x86_64 0:1.5.4-1.el8

Dependency Installed:
  openssl11-libs.x86_64 1:1.1.1k-4.el7

Complete!

2.启动 MongoDB 命令行接口:

mongosh --port 28015
[root@master mongodb]# mongosh --port 28015
Current Mongosh Log ID: 6322ee0798d2ff8df88c399f
Connecting to:          mongodb://127.0.0.1:28015/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.5.4
Using MongoDB:          4.2.17
Using Mongosh:          1.5.4

For mongosh info see: https://docs.mongodb.com/mongodb-shell/


To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy).
You can opt-out by running the disableTelemetry() command.

------
   The server generated these startup warnings when booting
   2022-09-15T09:14:59.248+0000:
   2022-09-15T09:14:59.249+0000: ** WARNING: Access control is not enabled for the database.
   2022-09-15T09:14:59.249+0000: **          Read and write access to data and configuration is unrestricted.
   2022-09-15T09:14:59.249+0000:
   2022-09-15T09:14:59.249+0000:
   2022-09-15T09:14:59.249+0000: ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
   2022-09-15T09:14:59.249+0000: **        We suggest setting it to 'never'
   2022-09-15T09:14:59.249+0000:
------

------
   Enable MongoDB's free cloud-based monitoring service, which will then receive and display
   metrics about your deployment (disk utilization, CPU, operation statistics, etc).

   The monitoring data will be available on a MongoDB website with a unique URL accessible to you
   and anyone you share the URL with. MongoDB may use this information to make product
   improvements and to suggest MongoDB products and deployment options to you.

   To enable free monitoring, run the following command: db.enableFreeMonitoring()
   To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
------

test> 

3.在 MongoDB 命令行提示符下,输入 ping 命令:

test> db.runCommand( { ping: 1 } )
{ ok: 1 } #成功的 ping 请求返回

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值