为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. NC20583 [SDOI2016]齿轮

    题目链接 题目 题目描述 现有一个传动系统,包含了N个组合齿轮和M个链条.每一个链条连接了两个组合齿轮u和v,并提供了一个传动比x : y. 即如果只考虑这两个组合齿轮,编号为u的齿轮转动x圈,编号为 ...

  2. shell脚本语句

    条件语句 1.if语句 语法格式: if [ expression ] then 命令 elif [ expression ] then 命令 -- else 命令 fi if语句有单分支结构,双分支 ...

  3. Ubu18远程登录密匙设置

    Ubu18设置远程密匙登录 相关文件 /etc/ssh/sshd_config 注意vscode使用博客园插件需要进行端口转发,在vscode端口处设置41385 本地生成密匙,任选一种,这里只介绍第 ...

  4. Linux系列之管理用户环境变量

    前言 环境变量控制你在Linux工作环境中的外观.行为和感觉.一共有两种类型的变量: 环境变量:这些是内置于系统中的进程范围的变量,控制着系统的外观和行为.因为是进程范围的,所以它们被任何子shell ...

  5. css基础05

    无关浏览器,只想对于原来的位置.而且下面的盒子也不会升上去. 没有父亲的时候就是以浏览器为标准的. 父亲没定位,爷爷有定位,就按照爷爷的,不管父亲了. 绝对定位飘起来比浮动还要高.飘起来了它的位置就会 ...

  6. WTL_Freecell绿色版

    WTL_Freecell绿色版-用户手册 1.程序特点和使用环境介绍 (1).版本信息 WTL_Freecell-Release05-v1.3-20190129 (WTL空当接龙绿色版v1.3),By ...

  7. DolphinScheduler JSON拆解详解

    本次活动邀请DolphinScheduler社区活跃贡献者,开源积极分子,现就职于政采云大数据部门,从事大数据平台架构工作的李进勇同学给大家分享相关内容. 同时也特别感谢示说网对本次直播活动的大力支持 ...

  8. java学习第一天.day02

    整数类型常量 整数类型的常量JVM默认使用 int 类型来存储 小数类型类型 小数类型的常量JVM默认使用 double 类型来存储 . ASCII表 A在码表的顺序是65,a在码表的顺序是97

  9. 一文搞懂 Python 的模块和包,在实战中的最佳实践

    最近公司有个项目,我需要写个小爬虫,将爬取到的数据进行统计分析.首先确定用 Python 写,其次不想用 Scrapy,因为要爬取的数据量和频率都不高,没必要上爬虫框架.于是,就自己搭了一个项目,通过 ...

  10. [HDU3976]Electric resistance(电阻)(信竞&物竞)(高斯消元)

    题面 Problem Description Now give you a circuit who has n nodes (marked from 1 to n) , please tell abc ...