为什么内部通讯的通讯时间(速度)比以前慢一些?

时间:2019-08-09 06:21:05

标签: kubernetes gke-networking

我在GKE上进行了申请。 我有一个关于吊舱之间连接的问题。 使用service_type LoadBalancer在集群上构建了该应用程序,该应用程序利用Internet进行连接。

这时,我决定使用service_type clusterIP来包含一个不应暴露给Internet的Pod。 在测试中,连接到此Pod大约需要5.4毫秒,但是,将此Pod暴露于Internet时,大约需要4.3毫秒。

即,使用LoadBalancer时,类型要优于ClusterIP。

在我看来,这些结果是相反的。 我认为ClusterIP服务仅使用内部网络,而LoadBalancer可以通过Internet进行访问。

此结果是否正确? 还是测试方法上有任何错误?

如果这是真的,为什么会这样?

import logging, requests
import statistics
import time
from flask import Flask, jsonify

app = Flask(__name__)


#clusterIPを指定した応答時間の測定
@app.route('/req_cluster')
def req_cluster():
    try:
        #応答時間を測定(100リクエスト分)
        response_time_list = []
        for i in range(100):
            start = time.time()
            res = requests.get("http://10.0.7.70:8080/prease_get")
            end = time.time()
            print(start - end)
            response_time_list.append(float(start - end))

        #合計値を格納
        execution_hours_sum = sum(response_time_list)
        #中央値を格納
        median = statistics.median(response_time_list)
        #平均値を格納
        mean = statistics.mean(response_time_list)

        #出力フォーマットの指定
        print("clusterIPを指定した応答時間の測定\n\n最終(100回目)のステータスコード:{}\n応答時間の合計値:{}\n応答時間の中央値:{}\n応答時間の平均値:{}".format(jsonify(res.status_code), execution_hours_sum, median, mean))
        result = "clusterIPを指定した応答時間の測定\n\n最終(100回目)のステータスコード:{}\n応答時間の合計値:{}\n応答時間の中央値:{}\n応答時間の平均値:{}".format(jsonify(res.status_code), execution_hours_sum, median, mean)

    except Exception as err:
        logging.error(err.args) 

    return result

#LoadBalancerを指定した応答時間の測定
@app.route('/req_loadbalancer')
def req_loadbalancer():
    try:
        #応答時間を測定(100リクエスト分)
        response_time_list = []
        for i in range(100):
            start = time.time()
            res =  requests.get("http://34.85.40.229:8080/prease_get") 
            end = time.time()
            print(start - end)
            response_time_list.append(float(start - end))

        #合計値を格納
        execution_hours_sum = sum(response_time_list)
        #中央値を格納
        median = statistics.median(response_time_list)
        #平均値を格納
        mean = statistics.mean(response_time_list)

        #出力フォーマットの指定
        print("LoadBalancerを指定した応答時間の測定\n\n最終(100回目)のステータスコード:{}\n応答時間の合計値:{}\n応答時間の中央値:{}\n応答時間の平均値:{}".format(jsonify(res.status_code), execution_hours_sum, median, mean))
        result = "LoadBalancerを指定した応答時間の測定\n\n最終(100回目)のステータスコード:{}\n応答時間の合計値:{}\n応答時間の中央値:{}\n応答時間の平均値:{}".format(jsonify(res.status_code), execution_hours_sum, median, mean)

    except Exception as err:
        logging.error(err.args) 

    return result

if __name__ == '__main__':
   app.run()
   logging.info('fugafuga')
   logging.warning('hogehoge')

集群IP'访问100次后,预期结果比负载均衡器更快。

enter image description here

参考图像如下。 service_type:ClusterIP == PodB service_type:LoadBalancer == PodC

1 个答案:

答案 0 :(得分:0)

可能是几件事:

  • 您的广告连播是否具有相同的resources
  • 配置错误的LoadBalancers
  • 您的内容可能会缓存在Google Cloud CDN
  • 您的测试可能使您的pod资源不堪重负,而Load Balancer可能“平衡”了您的测试

从一个容器到另一个pod容器的ICMP测试有多少“毫秒”?

您是否尝试过使用内部负载均衡器查看运行情况?