需求:研发需要调试部署的pod是否能正常提供访问,但又不对pod进行暴露到集群外。

实现:通过Kubernetes的Port Forward机制对本机端口映射到pod端口来实现

一、单集群配置

1、安装kubectl

官网下载页面:https://kubernetes.io/docs/tasks/tools/install-kubectl/

下载对应Kubernetes 相同版本的kubectl:

https://storage.googleapis.com/kubernetes-release/release/v1.14.1/bin/windows/amd64/kubectl.exe

把下载的kubectl.exe文件存放在C:\k8s\bin目录下,并把该目录添加到PATH中(步骤略)

2、配置kubectl

1)需要获取配置文件:

a、一般部署的Kubernetes,会生成 $HOME/.kube/config,把该目录下的config文件,存放在Windows本地对应家目录C:\Users\admin\.kube下

b、如果rancher部署的,可在集群首页查看配置文件,复制下来也存放在账号的家目录

2)然后cmd中查看集群

kubectl get node

说明配置kubectl成功。

3、设置转发端口

1)把本地3080端口转发到容器的80端口

kubectl port-forward my-nginx-6d7ddd766f-4fxxc 3080:80

Forwarding from 127.0.0.1:3080 -> 80
Forwarding from [::1]:3080 -> 80

输出如上,说明转发成功。如果是部署在其他namespace上,需要用 -n 指定namespace。该窗口不能关闭。

2)本地浏览器访问

127.0.0.1:3080

二、多集群配置

如果是多个集群(测试、正式、CI/CD等环境),有两种方式进行配置。

1、指定kubeconfig文件

将多个集群的 config 文件都存放在 .kube 文件夹中,命令指定文件绝对路径。

kubectl --kubeconfig="C:\Users\admin\.kube\dev-config" get pod --all-namespaces

2、指定 context

把所有的集群文件合并为一个文件config。

apiVersion: v1
kind: Config
clusters:
- name: "production"
cluster:
server: "https://rancher.wmq.com/k8s/clusters/c-xaw"
- name: "develop"
cluster:
server: "https://rancher.wmq.com/k8s/clusters/c-xaq" users:
- name: "u-42lyr7ytst"
user:
token: "kubeconfig-u-42lyr7ytst.c-x497w:756z5v8s84cch4444kx33333395zg4klxwtaaabqrg"
- name: "u-42lyr7ytst_dev"
user:
token: "kubeconfig-u-42lyr7ytst.c-xg99q:6sm7hhdlfx44449c4rs3333333333g3vzcjdjcaaazzq" contexts:
- name: "prod"
context:
user: "u-42lyr7ytst"
cluster: "production"
- name: "dev"
context:
user: "u-42lyr7ytst_dev"
cluster: "develop" current-context: "dev"

执行下面命令即可

kubectl --context dev get pod --all-namespaces

三、gui软件

如果觉得上面步骤很麻烦,这里推荐一个开源的gui软件:Kube Forwarder;支持多集群,只需要简单的导入各个集群的 kubeconfig 文件即可,很方便使用。

如下图:

Kubernetes Port Forward 机制访问 pod的更多相关文章

  1. kubernetes如何访问pod服务

    一.通过 Service 访问 Pod: 我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 control ...

  2. kubernetes应用的各种访问方式

    1. 通过 Pod 的 IP 地址访问应用 1.1 Pod 的IP地址 每个Pod 都会被分配一个IP地址,比如下面这儿pod的IP地址是 10.1.79.11. root@kub-node-0:/h ...

  3. 第六章 通过Service访问Pod(上)

    不应该直接使用Pod的ID地址作为对外提供服务的接口,应为一旦Pod重启,IP地址就变化了,解决方案是使用Service. 6.1 创建Service K8s service从逻辑上代表了一组Pod, ...

  4. 【Kubernetes】Kubernetes的Service外部访问方式:NodePort和LoadBalancer

    Kubernetes的Pod的寿命是有限的,它们不会复活,因此尽管每个Pod都有自己的IP地址,但是这些IP地址是不可靠的,会随着Pod的消亡而消失. 这就带来一个问题,如果一些Pod的集合(称之为b ...

  5. k8s如何访问pod

    1. 通过 Service 访问 Pod 我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 control ...

  6. 如何访问Pod

    本章看点: 理清Deployment,ReplicaSet和Pod的关系,以及三者之间的网络关系,ip地址和端口号 通过Pod进入docker容器修改里面的内容 外部网络访问Pod里面的应用 一.通过 ...

  7. 如何访问pod(6)

    一.通过 Service 访问 Pod: 我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 control ...

  8. linux运维、架构之路-K8s通过Service访问Pod

    一.通过Service访问Pod 每个Pod都有自己的IP地址,当Controller用新的Pod替换发生故障的Pod时,新Pod会分配到新的IP地址,例如:有一组Pod对外提供HTTP服务,它们的I ...

  9. 第6篇如何访问pod

        一.通过 Service 访问 Pod: 我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 con ...

随机推荐

  1. java_randomAccessFile类的使用

    RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件.RandomAccessFile支持随机访问文件,可以访问文件的任意位置 (1)java文件模型 在硬盘上 ...

  2. Html test

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  3. %2d

    %2d是C语言中printf函数的输出格式说明符. 具体解释如下: 使输出的int型的数值以2位的固定位宽输出.如果不足2位,则在前面补空格:如果超过2位,则按实际位数输出. 注:如果输出的数值不是i ...

  4. transition-分栏按钮动画

      => css: .cateBtn{ position: relative; background: #fff; border: 1px solid #ddd; border-radius: ...

  5. CAD处理键盘按钮被释放(com接口VB语言)

    主要用到函数说明: MxDrawXCustomEvent::KeyUp 键盘按钮被释放,详细说明如下: 参数 说明 iVk 是按钮码,如F8,的值为#define VK_F8 0x77 返回0消息继续 ...

  6. 8 switch case

    当一个case成立,从这个case向后穿透所有case,即使后面的case条件不成立 包括default,直到程序结束或者遇到break程序才结束. 1.case是常量,且不能重复 2.表达式可以是b ...

  7. DOCKER - 容器抓包

    https://help.aliyun.com/knowledge_detail/40564.html?spm=a2c4e.11153940.blogcont272172.10.b09e28a6AOd ...

  8. oracle数据库视图,序列,索引的sql语句查看

    1.视图:相当于表,可以用select * from tab;查看所有表和视图: 2.序列和索引可以利用select * from user_indexes 或者user_sequences;进行查看 ...

  9. 【Linq】

    " }; var l1 = strs.ToLookup(a => "a"); //Key=a elements=1,3 var l2 = strs.ToLookup ...

  10. 基于Composer的Laravel扩展包开发工作流

    使用场景 在引用第三方包的时候,对第三方包有改动需求,需要将代码放在自己的仓库:并且自己的其他项目也有需求引用自定义的第三方包:甚至自己会发布修改后的第三方包: 读完本文你讲获得: Git Submo ...