Как корректно завершить работу сервиса Go, работающего на Kubernetes

Вы должны поместить свои одиночные кавычки вокруг него, чтобы сделать его допустимым атрибутом. HTML создается как value=North Campus, который интерпретируется как value="North" и некоторый атрибут Campus, который не имеет значения. Используйте value='$location'.

2
задан Andy Fusniak 17 January 2019 в 15:43
поделиться

1 ответ

Кубернетес посылает сигнал SIGTERM. Таким образом, постепенное отключение может выглядеть следующим образом:

package main

import (
    "context"
    "log"
    "net/http"
    "os"
    "os/signal"
    "syscall"
)

func main() {
    var srv http.Server

    idleConnsClosed := make(chan struct{})
    go func() {
        sigint := make(chan os.Signal, 1)

        // interrupt signal sent from terminal
        signal.Notify(sigint, os.Interrupt)
        // sigterm signal sent from kubernetes
        signal.Notify(sigint, syscall.SIGTERM)

        <-sigint

        // We received an interrupt signal, shut down.
        if err := srv.Shutdown(context.Background()); err != nil {
            // Error from closing listeners, or context timeout:
            log.Printf("HTTP server Shutdown: %v", err)
        }
        close(idleConnsClosed)
    }()

    if err := srv.ListenAndServe(); err != http.ErrServerClosed {
        // Error starting or closing listener:
        log.Printf("HTTP server ListenAndServe: %v", err)
    }

    <-idleConnsClosed
}

Также вы должны добавить пробники «Живучесть и Готовность» к своим модулям:

livenessProbe:
  httpGet:
    path: /health
    port: 80
readinessProbe:
  httpGet:
    path: /health
    port: 80
0
ответ дан Alex Pliutau 17 January 2019 в 15:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: