亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何確保 kubernetes 中的優雅擴展?

如何確保 kubernetes 中的優雅擴展?

Go
翻閱古今 2021-10-25 16:20:37
作為在 kubernetes 中擴展 pod 的一部分,我想確保在關閉之前優雅地為我的 http 連接提供服務。在某種程度上,我已經在 go 中實現了這段代碼:package mainimport (    "fmt"    "io"    "net/http"    "os"    "os/signal"    "syscall"    "github.com/braintree/manners")func main() {    shutdown := make(chan int)    //create a notification channel to shutdown    sigChan := make(chan os.Signal, 1)    //start the http server    http.HandleFunc("/", hello)    server := manners.NewWithServer(&http.Server{Addr: ":80", Handler: nil})    go func() {        server.ListenAndServe()        shutdown <- 1    }()    //register for interupt (Ctrl+C) and SIGTERM (docker)    signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM)    go func() {        <-sigChan        fmt.Println("Shutting down...")        server.Close()    }()    <-shutdown}func hello(w http.ResponseWriter, r *http.Request) {    // time.Sleep(3000 * time.Millisecond)    io.WriteString(w, "Hello world!")}這會尋找 docker SIGTERM 并在現有請求得到服務后正常關閉。當我在具有 10 個實例的 kubernetes 中運行這個容器時,只要我不縮減到單個實例,我就可以毫無意外地擴展和縮減。當我擴展到單個實例時,我看到一組簡短的 http 錯誤,然后一切看起來都很好。我覺得很奇怪,因為在擴展時我會假設代理首先更新,然后容器被關閉,上面的代碼將允許提供請求。在我當前的設置中,我正在運行 2 個節點,也許問題是當擴展低于節點數量時,并且 etcd 更新存在某種計時問題?對這里發生的事情的任何見解都會非常有用
查看完整描述

2 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

有一個小窗口,在此期間,正在移除但仍處于活動狀態的 Pod 將成為負載平衡集的一部分。正如 Brendan 剛剛說的(他以幾秒鐘的優勢擊敗了我),準備就緒檢查應該完全在你的控制之下為你解決這個問題。


查看完整回答
反對 回復 2021-10-25
  • 2 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號