截取/捕获Kubernetes中的pod / services的传入流量

时间:2018-01-19 09:59:00

标签: kubernetes openshift

我使用Openshift和Kubernetes作为我的应用程序的云平台。出于测试目的,我需要拦截传入的http请求到我的pod。这可以通过Kubernetes客户端库来实现,也可以使用yaml进行配置?

2 个答案:

答案 0 :(得分:0)

简单的答案是否定的,你不能。

解决此问题的方法之一是执行容器(kubectl exec -it <pod> bash),安装tcpdump并运行类似tcpdump -i eth0 -n的内容。

在基础水平上解决问题的一种更合理的方法是使用一些跟踪工具,如Jaeger / Zipkin

答案 1 :(得分:0)

您可以尝试以下类似的操作。首先,您需要创建工作。 用名称(tcpdumppod.yaml)说

apiVersion: batch/v1
kind: Job
metadata:
  name: tcpdump-capture-job
  namespace: blue
spec:
  template:
    metadata:
      name: "tcpdumpcapture-pod"
    spec:
      hostNetwork: true
      nodeSelector:
        kubernetes.io/hostname: "ip-xx-x-x-xxx.ap-south-1.compute.internal"
      tolerations:
        - key: node-role.kubernetes.io/master
          effect: NoSchedule
      containers:
      - name: "job-container"
        image: "docker.io/centos/tools"
        command: ["/bin/bash", "-c", "--"]
        args: [ "tcpdump -i any -s0 -vv -n dst host 10.233.6.70 and port 7776 || src 10.233.64.23" ]
      restartPolicy: Never 
  backoffLimit: 3
  activeDeadlineSeconds: 460

=> kubectl创建-f tcpdumppod.yaml 并检查容器运行时作业创建的pod日志。