Kubernetes - отправьте HTTP-запрос от Pod к ListenAndServe - PullRequest
0 голосов
/ 06 января 2020

(довольно новый в Kubernetes, заранее извините за возможные ошибки)

Я использую kind ( kind ) для моего двухузлового (основного и рабочего) кластера с StatefulSet из 10 модулей, и у меня есть node.js, который имитирует HTTP-сервер, который получает запросы HTTP GET, которые выполняются на каждом модуле.

Я пытаюсь установить соединение для отправки HTTP POST с бездействующим массажем всякий раз, когда модуль бездействует (после обработки HTTP-запроса GET) к функции NextEndpoint в roundrobin.go с ListenAndServe для нового алгоритма балансировки нагрузки, который я хочу реализовать в roundrobin.go, который основан на модулях, посылающих в LB бездействующий массаж всякий раз, когда они завершают sh обработку HTTP-запроса на получение, отправленного из внешнего сценария python.

Я получаю эту ошибку (из журналов модуля):

ECONNREFUSED 172.17.0.3:8081, где 172.17.0.3 - локальный IP-адрес узла плоскости управления.

Редактировать

Я создал модуль webr-master, работающий на узле плоскости управления (master), и его контейнером является nodeJS, который успешно получает Http POST от модулей в наборе состояний. Теперь мне нужно отправить Http POST с сообщением, полученным webr-master, в функцию ListenAndServe, которая в данный момент вызывается в функции Run в stateful_set.go, которая, похоже, ничего не делает.

  1. Куда мне звонить ListenAndServe?
  2. Должен ли я выставить другой порт на webr-master s 'контейнере, чтобы связь в направлении webr-master -to-kubernetes работала?
  3. Что именно означает containerPort поле a pod означает?

Кодовые выдержки:

В круглом. go:

type idleHandler struct{
    lb LoadBalancer
    svcPort proxy.ServicePortName
}

func (ih *idleHandler) handler(w http.ResponseWriter, r *http.Request) {
    //something something
}

В функции NextEndpoint:

    handlerStruct := &idleHandler{lb: lb, svcPort: svcPort}
    http.HandleFunc("/", handlerStruct.handler)

    if err := http.ListenAndServe("172.17.0.3:8081", nil); err != nil {
    log.Fatal("ListenAndServe: ", err)
    }

В server.js:

const http = require('http');
const fs = require('fs');
const url = require('url');

//HTTP POST
var postData = JSON.stringify({msg: 'IDLE'})

var options = {
  hostname: '172.17.0.3',   //control plane node
  port: 8081,              //NodePort
  path: '/',
  method: 'POST',
  headers: {
       'Content-Type': 'application/json',
       'Content-Length': postData.length
     }
};

function handleRequest(request, response) {

      //HTTP GET response here...

      //HTTP POST
      var req = http.request(options, (res) => {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);

  res.on('data', (d) => {
    process.stdout.write(d);
  });
});

req.on('error', (e) => {
  console.error(e);
});
    //post IDLE

    req.end(postData);
}

Спасибо.

...