使用Port Forwarding连接k8s集群的pod(redis、mysql等)

一. 创建Redis的deployment和service

1. 创建Redis deployment

  redis-master-deployment.yaml 

复制代码
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: redis-master
  labels:
    app: redis
spec:
  selector:
    matchLabels:
      app: redis
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: k8s.gcr.io/redis:e2e  # or just image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379
复制代码

执行:

kubectl create -f redis-master-deployment.yaml

查看执行结果:

deployment "redis-master" created

 

复制代码
当 pod 是 ready 时,将得到:

   kubectl get pods

    NAME                            READY     STATUS    RESTARTS   AGE
    redis-master-765d459796-258hz   1/1       Running   0          50s

   kubectl get deployment

    NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    redis-master 1         1         1            1           55s

   kubectl get rs

    NAME                      DESIRED   CURRENT   READY     AGE
    redis-master-765d459796   1         1         1         1m
复制代码

 

2. 创建redis service

   redis-master-service.yaml

复制代码
apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
    role: master
    tier: backend
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: master
    tier: backend
复制代码

执行:

kubectl create -f redis-master-service.yaml

查看结果:

service "redis-master" created

 

3. 验证 Redis 服务是否运行在 pod 中并且监听 6379 端口:

kubectl get pods redis-master-765d459796-258hz –template=‘{{(index (index .spec.containers 0).ports 0).containerPort}}{{”\n”}}’

输出:

6379

 

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

1. 从 Kubernetes v1.10 开始,kubectl port-forward 允许使用资源名称(例如服务名称)来选择匹配的 pod 来进行端口转发。

kubectl port-forward redis-master-765d459796-258hz 6379:6379

相当于:

kubectl port-forward pods/redis-master-765d459796-258hz 6379:6379

kubectl port-forward deployment/redis-master 6379:6379

kubectl port-forward rs/redis-master 6379:6379

kubectl port-forward svc/redis-master 6379:6379

以上的命令都有效,输出类似于:

I0710 14:43:38.274550    3655 portforward.go:225] Forwarding from 127.0.0.1:6379 -> 6379
I0710 14:43:38.274797    3655 portforward.go:225] Forwarding from [::1]:6379 -> 6379

 

2. 启动 Redis 命令行接口:

redis-cli

在 Redis 命令行提示符下,输入 ping 命令:

127.0.0.1:6379>ping

提示ping成功

 

与本地 6379 端口建立的连接将转发到运行 Redis 服务器的 pod 的 6379 端口。通过此连接,可以使用本地工作站来调试在 pod 中运行的数据库。

posted @   UniqueColor  阅读(1227)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2015-11-20 hdu 5510 Bazinga(暴力)
点击右上角即可分享
微信分享提示