k8s使用port-forward访问集群中的应用程序(只能在执行命令的机器上开放端口)_svc port-forward-程序员宅基地

技术标签: k8s  

k8s使用port-forward访问集群中的应用程序

本文描述了如何使用 kubectl port-forward 访问 Kubernetes 集群中的 Redis Server。这种连接方式在实际进行Debug时非常有效。

为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 (opens new window)用来跟进对 UDP 协议的支持。
  • MySQL数据库等使用 TCP 协议的部署在K8S集群中的服务器,都可以使用此方式进行 DEBUG

参考链接:

https://kuboard.cn/learning/k8s-practice/access/port-forward.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a772304419/article/details/113676392

智能推荐

mysql语句_mysql服务启动语句-程序员宅基地

文章浏览阅读218次。mysql语句启动mysql services.msc登录mysql -uroot -proot退出exitmysql 数据库操作数据库表格操作修改表删除表表-数据-增删改查条件查询 (复杂)连接查询(连表查询)子查询 (一个查询的结果作为另一个查询的一部分)启动mysql services.msc登录mysql -uroot -proot退出exitmysql 数据库操作登录mysql -uroot -prootquit/exit查看当前使用数据库: select database();_mysql服务启动语句

网址跳转重定向浏览器html,域名301重定向页面转跳的操作方法-巅云建站-程序员宅基地

文章浏览阅读1.3k次。当网站地址变更时,需要将旧域名301重定向到新的URL地址,实际上就是把旧地址的访问请求重新引导到新域名上。301永久重定向无论是对用户还是搜索引擎都是比较友好的,对SEO完全没有不好的一面。通过旧网站的关键词排名和PR等级都会传递给新网站,网站更换了域名,用域名301永久重定向的方式告诉搜索引擎本网页已经永久性转移到新的域名,避免搜索引擎无法找到页面,网站对于搜索引擎相对比较友好。域名重定向的好..._一个域名301重定向到另一个域名的url上

【软考-软件设计师精华知识点笔记】第八章 算法分析设计_软考决策树-程序员宅基地

文章浏览阅读1.4k次,点赞2次,收藏11次。【软考-软件设计师精华知识点笔记】第八章 算法分析设计_软考决策树

ubuntu怎么切换到root用户,切换到root账号方法_unbuntu切换到root用户-程序员宅基地

文章浏览阅读2.7w次,点赞28次,收藏169次。ubuntu怎么切换到root用户,使用su root命令,去切换到root权限,会提示输入密码,可是如何也输不对,提示“Authentication failure”或者是提示认证失败。该错误有两种情况一个是密码错了,另一种就是新安装好的Linux系统,暂时还没有给root设置密码。1、打开Ubuntu,输入命令:su root,回车提示输入密码,如何输入都不对。2、给root用户设置密码,命令“sudo passwd root ” 。 输入密码,并确认密码。3、重新输入命_unbuntu切换到root用户

精选2022年大厂高频Java面试真题集锦(含答案),面试一路开挂_java程序员大厂真题解析 作者图灵学院 周瑜-程序员宅基地

文章浏览阅读6.6k次。本文涵盖了阿里巴巴、腾讯、字节跳动、京东、华为等大厂的Java面试真题,不管你是要面试大厂还是普通的互联网公司,这些面试题对你肯定是有帮助的,毕竟大厂一定是行业的发展方向标杆,很多公司的面试官同样会研究大厂的面试题。与此同时,今年算法面试一定是会被问的,而算法不是光靠背面试题就有用的,它是需要数学逻辑思维的,因此,小编会在文末为大家准备一份非常优质的算法学习手册,重点在于学习思维方法,话不多说,直接开始上精选的大厂面试真题!1.JAVA 中的几种数据类型是什么,各自占用多少字节。2.String 类能被继承_java程序员大厂真题解析 作者图灵学院 周瑜

HTMLQQ跳转三方实现聊天功能_htmlqq聊天超链接-程序员宅基地

文章浏览阅读960次。众所周知,我们的网页右侧一般都有一个组件,那就联系QQ这个功能的实现就是一行代码解决QQ推广是不允许复制粘贴网页里的代码< a href="http://wpa.qq.com/msgrd?v=3&uin=1393882772&site=qq&menu=yes">联系客服</a>利用超链接实现跳转外部QQ链接在任何标签里边都可以实现此功能..._htmlqq聊天超链接

随便推点

【超分辨率(Super-Resolution)】关于【超分辨率重建】专栏的相关说明,包含专栏简介、专栏亮点、适配人群、相关说明、阅读顺序、超分理解、实现流程、研究方向、论文代码数据集汇总等-程序员宅基地

文章浏览阅读8.5k次,点赞54次,收藏23次。本专栏研究领域为【超分辨率重建】,涵盖图像超分、视频超分,实时超分,4K修复等方面。主要内容包括主流算法模型的论文精读、论文复现、毕业设计、涨点手段、调参技巧、论文写作、应用落地等方面。算法模型从SRCNN开始更新至今,一般是一篇论文精读对应一篇论文复现。论文精读详解理论,归化繁为简,归纳核心,积累词句,培养阅读论文和论文写作能力。论文复现依托Pytorch代码,实现完整的模型训练流程,总结调参方法,记录碰到的bug,论文插图可视化,培养读写代码能力、做实验的能力、以及应用落地能力。

python upload_module_转:使用 Nginx Upload Module 实现上传文件功能-程序员宅基地

文章浏览阅读327次。普通网站在实现文件上传功能的时候,一般是使用Python,Java等后端程序实现,比较麻烦。Nginx有一个Upload模块,可以非常简单的实现文件上传功能。此模块的原理是先把用户上传的文件保存到临时文件,然后在交由后台页面处理,并且把文件的原名,上传后的名称,文件类型,文件大小set到页面。下面和大家具体介绍一下。一、编译安装Nginx为了使用Nginx Upload Module,需要编译安装..._向nginx_upload_module服务器上传文件的python脚本

Python技能树丨Python简介-程序员宅基地

文章浏览阅读1k次,点赞15次,收藏30次。 作者主页:不吃西红柿****一、为什么要学Python短短 20 年间,**「计算机和互联网」**以一种前所未有的速度,改变了人类的生活 。我们使用微信 「交流」,使用淘宝 「购物」,使用搜索引擎 「获取信息」,随着 Uber、滴滴、美团的出现,甚至我们的出行、吃饭都越来越离不开互联网了。而这些改变,都来源于编程。如果说上个世纪是全球化的时代,掌握了英语,就能成为时代的宠儿;那么在 语义识别 和 人工智能 愈发成熟的今天,**「人和人的沟通」**不再是难题, 「人和计算机的沟通」 会显得越来越重要。我

[享学Ribbon] 三、Ribbon核心API源码解析:ribbon-core(二)IClientConfig配置详解_iclientconfig lai-程序员宅基地

文章浏览阅读2.5k次。配置对于一个程序到底有多重要自然不用多说,每个库均有它自己的配置管理方式,比如Spring有`Enviroment`抽象等。本文即将介绍的是Ribbon中一个使用频繁,且非常重要的接口:`IClientConfig`,它负责Ribbon的**配置管理**,包括所有默认值的维护,以及提供提供其读写能力。_iclientconfig lai

Matlab中dir函数使用小技巧_matlab dir函数用法-程序员宅基地

文章浏览阅读9.5k次,点赞11次,收藏66次。想必很多小伙伴在matlab中对文件进行批处理时经常会使用dir函数吧,dir函数用于列出文件夹中的内容。使用语法如下:% Matlabdir % 列出当前文件夹中的文件和文件夹,当然调用方式也可以是listing = dirdir name % 列出当前文件夹中与name同名的文件和文件夹,不支持调用方式listing = dir namelisting = dir(name) % 列出当前文件夹中与name同名的文件和文件夹当_matlab dir函数用法

zeromq java 教程,如何使用Java运行ZeroMQ?-程序员宅基地

文章浏览阅读228次。I'm having an issue running ZeroMQ with Java using Eclipse and Windows XP. I've successfully installed [I think] the 0MQ libraries as well as the Java bindings. The instructions I used to do that are ..._zeromq java

推荐文章

热门文章

相关标签