为Redis创建Deployment和Service

  • 创建 Redis Deployment,YAML文件如下:

    apiVersion: apps/v1
    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: redis
    resources:
    requests:
    cpu: 100m
    memory: 100Mi
    ports:
    - containerPort: 6379

执行命令,以创建 Redis Deployment

kubectl apply -f https://kuboard.cn/statics/learning/ptc/port-forward/redis-master-deployment.yaml

执行命令,查看Pod状态:

kubectl get pods

输出结果如下:

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

执行命令,查看 Deployment状态:

kubectl get deployment

输出结果如下

NAME         READY   UP-TO-DATE   AVAILABLE   AGE
redis-master 1/1 1 1 55s

执行命令,查看ReplicaSet状态

kubectl get rs

输出结果如下:

NAME                      DESIRED   CURRENT   READY     AGE
redis-master-765d459796 1 1 1 1m

创建Redis服务,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

执行命令,创建Service

kubectl apply -f https://kuboard.cn/statics/learning/ptc/port-forward/redis-master-service.yaml

执行命令,检查Service创建结果

kubectl get svc | grep redis

输出结果如下所示:

NAME           TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
redis-master ClusterIP 10.100.0.213 <none> 6379/TCP 27s

验证 Redis Service已经运行,并监听了 6379 端口

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

请将 redis-master-765d459796-258hz 替换成你实际 redis 的名字 输出结果如下所示:

6379

# 转发本地端口到Pod的端口

  • 使用 kubectl port-forward 命令,用户可以使用资源的名称来进行端口转发。下面的命令中的任意一行,都可以实现端口转发的效果:

    # 这几个命令执行任意一个即可
    kubectl port-forward redis-master-765d459796-258hz 7000:6379
    kubectl port-forward pods/redis-master-765d459796-258hz 7000:6379
    kubectl port-forward deployment/redis-master 7000:6379
    kubectl port-forward rs/redis-master 7000:6379
    kubectl port-forward svc/redis-master 7000:6379

以上命令的输出结果类似:

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

启动 Redis 命令行:

redis-cli -p 7000

在Redis命令行工具的提示符下,输入 ping 命令,如下所示:

127.0.0.1:7000>ping
  • Redis 服务器将返回 PONG

# 总结

本机 7000 端口的连接被转发到集群中 Redis Server 所在 Pod 的 6379 端口。当此连接存在时,您可以使用您自己的机器上的客户端对部署在集群中的 Redis Server 进行 Debug。

提示

  • 由于一些限制,port-forward 目前只支持 TCP 协议,issue 47862 用来跟进对 UDP 协议的支持。

MySQL数据库等使用 TCP 协议的部署在K8S集群中的服务器,都可以使用此方式进行 DEBUG

使用port-forward访问集群中的应用程序,以Redis 为例的更多相关文章

  1. 实操教程丨如何在K8S集群中部署Traefik Ingress Controller

    注:本文使用的Traefik为1.x的版本 在生产环境中,我们常常需要控制来自互联网的外部进入集群中,而这恰巧是Ingress的职责. Ingress的主要目的是将HTTP和HTTPS从集群外部暴露给 ...

  2. Redis设置认证密码 Redis使用认证密码登录 在Redis集群中使用认证密码

    Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用.这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安 ...

  3. 转:Redis设置认证密码 Redis使用认证密码登录 在Redis集群中使用认证密码

    Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用.这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安 ...

  4. 【转载】浅析从外部访问 Kubernetes 集群中应用的几种方式

    一般情况下,Kubernetes 的 Cluster Network 是属于私有网络,只能在 Cluster Network 内部才能访问部署的应用.那么如何才能将 Kubernetes 集群中的应用 ...

  5. Hadoop(八)Java程序访问HDFS集群中数据块与查看文件系统

    前言 我们知道HDFS集群中,所有的文件都是存放在DN的数据块中的.那我们该怎么去查看数据块的相关属性的呢?这就是我今天分享的内容了 一.HDFS中数据块概述 1.1.HDFS集群中数据块存放位置 我 ...

  6. Docker Swarm集群中部署Traefik负载均衡器

    一.创建单节点的Docker Swarm集群 docker swarm init 二.在Swarm集群中创建一个网络 docker network create --driver=overlay tr ...

  7. apache tomcat搭建负载均衡(实现集群中的session同步)

    原理:tomcat 做个WEB服务器有它的局限性,处理能力低,效率低.承受并发小(1000左右).但目前有不少网站或者页面是JSP的.并采用了tomcat做为WEB,因此只能在此基础上调优. 目前采取 ...

  8. docker swarm英文文档学习-8-在集群中部署服务

    Deploy services to a swarm在集群中部署服务 集群服务使用声明式模型,这意味着你需要定义服务的所需状态,并依赖Docker来维护该状态.该状态包括以下信息(但不限于): 应该运 ...

  9. 初试 Kubernetes 集群中使用 Traefik 反向代理

    初试 Kubernetes 集群中使用 Traefik 反向代理 2017年11月17日 09:47:20 哎_小羊_168 阅读数:12308    版权声明:本文为博主原创文章,未经博主允许不得转 ...

随机推荐

  1. SpringBoot接口 - 如何生成接口文档之非侵入方式(通过注释生成)Smart-Doc?

    通过Swagger系列可以快速生成API文档,但是这种API文档生成是需要在接口上添加注解等,这表明这是一种侵入式方式: 那么有没有非侵入式方式呢, 比如通过注释生成文档? 本文主要介绍非侵入式的方式 ...

  2. 升级了Springboot版本后项目启动不了了

    问题背景 项目上使用的springboot版本是2.1.1.RELEASE,现在因为要接入elasticsearch7.x版本,参考官方文档要求,需要将springboot版本升级到2.5.14. 本 ...

  3. IDEA快捷键之晨讲篇

    IDEA之html快捷键 快捷键 释义 ! 生成HTML的初始格式 ---- ---- 标签名*n 生成n个相同的标签 ---- ---- 标签>标签 生成父子级标签(包含) ---- ---- ...

  4. 推荐系统-协同过滤在Spark中的实现

    作者:vivo 互联网服务器团队-Tang Shutao 现如今推荐无处不在,例如抖音.淘宝.京东App均能见到推荐系统的身影,其背后涉及许多的技术.本文以经典的协同过滤为切入点,重点介绍了被工业界广 ...

  5. java------注释、关键字、字面量

    注释(对代码的一种解释说明) 单行注释   // 多行注释   /*   */ 文档注释 /** */ 注释使用细节: 注释内容不参与编译和运行,所以只在java文件中存在 不管是单行注释还是多行注释 ...

  6. Redis系列4:高可用之Sentinel(哨兵模式)

    Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 1 背景 从第三篇 Redis系列3:高可用之主从架构 ,我们知道,为Re ...

  7. HTTP配置

    目录 HTTP配置 虚拟主机 相同IP不同端口 不同IP相同端口 相同IP相同端口不同域名 Linux修改hosts文件 Windows修改hosts文件 配置https HTTP配置 虚拟主机 虚拟 ...

  8. MODBUS转PROFINET网关将电力智能监控仪表接入PROFINET网络案例

    本案例控制的主要对象是变送器的显示与报警.系统主PLC 选用西门子CPU,通过小疆智控MODBUS 转 PROFINET网关GW-PN5001采集IM300电力智能监控仪数据. 1.首先加入 GSD ...

  9. vue中vuex实现持久化的几种方法

    前提:大家都知道vuex真的数据共享是不持久的,例如登录后一刷新,state中存的token就会消失,导致你需要再次进行登录操作 在这给大家列出几种解决方案: 第一种(也是一些项目中常使用的):使用缓 ...

  10. 深入理解Spring事件机制(一):广播器与监听器的初始化

    前言 Spring 从 3.x 开始支持事件机制.在 Spring 的事件机制中,我们可以令一个事件类继承 ApplicationEvent 类,然后将实现了 ApplicationListener ...