Почему время (скорость) внутренней связи немного медленнее, чем раньше?

Я подал заявку на GKE. У меня есть вопрос о связи между стручками. Созданное приложение было создано в кластере с использованием service_type LoadBalancer, который использовал Интернет для подключения.

В настоящее время я решил использовать кластер service_typeIP, чтобы включить модуль, который не должен быть доступен для Интернета. В тесте для подключения к этому модулю потребовалось около 5,4 мс, однако при подключении этого модуля к Интернету этот показатель составлял около 4,3 мс.

А именно, при использовании LoadBalancer тип был лучше, чем у ClusterIP.

На мой взгляд, эти результаты противоположны. Я думаю, что сервис ClusterIP использует только внутренние сети, а LoadBalancer один делает через Интернет.

Это результат верно? Или есть какие-то ошибки на пути к тестированию?

Если это правда, почему это происходит?

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 раз.

введите описание изображения здесь

Справочное изображение ниже. service_type: ClusterIP == PodB service_type: LoadBalancer == PodC

1 ответ

Может быть несколько вещей:

  • У ваших стручков одинаковые ресурсы?
  • Неправильно настроены LoadBalancers
  • Ваш контент может быть кэширован в Google Cloud CDN
  • Ваш тест мог перегружать ваши ресурсы pod, и балансировщик нагрузки мог "сбалансировать" ваши тесты

Сколько "ms" тестов ICMP из контейнера в другой контейнер pod вы получаете?

Вы пытались использовать внутренний балансировщик нагрузки, чтобы увидеть, как это происходит?

Другие вопросы по тегам