Kubeadm: kubeadm์€ ์–ด๋””์—์„œ ํ”„๋ก์‹œ ์„ค์ •์„ ๊ฐ€์ ธ ์˜ต๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2017๋…„ 06์›” 28์ผ  ยท  13์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: kubernetes/kubeadm

/ etc / environment๊ฐ€ ์•„๋‹ˆ๋ฉฐ kubeadm์ด ์‹คํ–‰์ค‘์ธ ํ˜„์žฌ bash ์„ธ์…˜์ด ์•„๋‹ˆ๋ฉฐ docker ๋˜๋Š” kubelet ํ™˜๊ฒฝ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ์ธ์Šคํ„ด์Šค์—์„œ no_proxy ๋ฅผ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜์—ฌ์ด๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ์ด์œ ๋กœ kubeadm init ์ดํ›„์—๋„ ์—ฌ์ „ํžˆ no_proxy ๋Œ€ํ•ด ๋‹ค๋ฅธ ๊ฐ’์„ ๊ณ„์† ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์‹œ์ž‘, ๋ฐ๋ชฌ ๋‹ค์‹œ๋กœ๋“œ, ์„œ๋น„์Šค ๋‹ค์‹œ ์‹œ์ž‘์€ ๊ทธ ์‚ฌ์‹ค์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์†”์งํžˆ "ip ์ฃผ์†Œ fo.oo.ba.rr์— ํ”„๋ก์‹œ๊ฐ€ blubb๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค."๋ผ๋Š” ์ค„๋งŒ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ์ •๋ง ์งœ์ฆ๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ”„๋ก์‹œ ์„ค์ •๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ง„์ •ํ•œ ์ง„์‹ค์˜ ์›์ฒœ ์ธ / etc / environment์—์„œ ๊ฐ’์„ ์ฝ์ง€ ์•Š๋Š” ์ด์œ  ๋˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด kubeadm ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ˜„์žฌ bash ์„ธ์…˜ ๋ณ€๊ฒฝํ•  ์žฅ์†Œ?

๋‚ด๊ฐ€ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. kubeadm์€ ํ˜„์žฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ http_proxy ํ•ฉ๋‹ˆ๋‹ค. (๋˜๋Š” ๋ณด์•ˆ ํ†ต์‹ ์ด ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ https_proxy )
  2. kubeadm์€ ํ˜„์žฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ HTTP_PROXY ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒฝ์šฐ ๊ฒฝ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  3. kubeadm์€ / etc / environment์—์„œ http_proxy ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฒฝ์šฐ ๊ฒฝ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  4. ๋Œ€๋ฌธ์ž์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.
  5. ๋‘ ์ปจํ…์ŠคํŠธ ๋ชจ๋‘์— ๋ณ€์ˆ˜๊ฐ€ ์—†์œผ๋ฉด ํ”„๋ก์‹œ๊ฐ€ ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์ด์— ๋Œ€ํ•ด ์•Œ๋ฆฝ๋‹ˆ๋‹ค .
  6. kubeadm์€ ์ฃผ์–ด์ง„ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ (๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ์ˆ˜ํ–‰๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •)์„ ์ž‘์„ฑํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค ํ™˜๊ฒฝ ์„ค์ •์„ ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž, ์†Œ๋ฌธ์ž / etc / environment, ๋Œ€๋ฌธ์ž / etc ์ˆœ์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. /ํ™˜๊ฒฝ.
  7. kubeadm์€ ํฌ๋“œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  8. kubeadm์€ ์ปจํŠธ๋กค๋Ÿฌ ๊ด€๋ฆฌ์ž๊ฐ€ api ์„œ๋ฒ„์™€ ํ†ต์‹  ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. "๊ธˆ์ง€๋จ"๋˜๋Š” "์‹œ๊ฐ„ ์ดˆ๊ณผ"๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ”„๋ก์‹œ ์„ค์ •์ด ์ž˜๋ชป๋˜์–ด ๋‚ด๋ถ€์ ์œผ๋กœ kubeadm reset ํ˜ธ์ถœํ•˜๋Š” ์˜ค๋ฅ˜ ๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
  9. ์ถœ๋ ฅ์—†์ด ์˜์›ํžˆ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ด๋ฒคํŠธ๋Š” ์—†์Šต๋‹ˆ๋‹ค. api-server ๋ฐ controller-manager์˜ ๋กœ๊ทธ์— ์—ฐ์† ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ > = 10 ๋ถ„ ๋™์•ˆ ์ƒˆ ๋กœ๊ทธ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ ์–ด๋„ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ์ž˜ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ•ด๋‹น ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  10. ์‚ฌ์ „์— ๋‚ด๋ถ€์ ์œผ๋กœ kubeadm ์˜ํ•ด ์ขŒ์šฐ๋Š” ๋ชจ๋“  ์ฃผ์†Œ ๊ด‘๊ณ  no_proxy ์„ค์ • (๋ ์ถ”๊ฐ€๋Š”์˜ ์ƒ์ฒ˜๋ฅผ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). <-๋˜ํ•œ no_proxy ๋Š” ์‹ค์ œ๋กœ IP๊ฐ€ ์•„๋‹Œ ์ด๋ฆ„์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ๊ฐ€๋Šฅํ•˜๋ฉด ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์ข‹์Šต๋‹ˆ๋‹ค.

๊ธฐ์—… ๋„คํŠธ์›Œํฌ์—์„œ ์‚ฌ๋žŒ๋“ค์„ ๊ตฌํ•  ์ˆ˜์žˆ๋Š” ๊ทผ๋ฌด ์‹œ๊ฐ„์„ ์ง„์ง€ํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

help wanted prioritbacklog

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋Š” ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ IP๋ฅผ NO_PROXY์— ํฌํ•จํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์— ์ฐธ์—ฌํ•  ๋•Œ ๋ชจ๋“  ๋ฏธ๋‹ˆ์–ธ์— ๋™์ผํ•œ NO_PROXY๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ "์ˆ˜์ •"ํ–ˆ์Šต๋‹ˆ๋‹ค.

$ export NO_PROXY = 'ip, ip, ip, ip, .example.com'
[๋งˆ์Šคํ„ฐ] $ kubeadm init
[minion] $ kubeadm join --token = {token} abcd : 6443

์†”์งํžˆ ๋งํ•ด์„œ ๋ชจ๋“  IP ์ฃผ์†Œ๊ฐ€ ์—ด๊ฑฐ๋˜๋Š”์ง€ ์•„๋‹ˆ๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•œ .example.com์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  13 ๋Œ“๊ธ€

@erikbgithub ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!
๋‚ด๊ฐ€ ๊ทธ๋Ÿฐ ํ™˜๊ฒฝ์—์„œ ๋งŽ์ด ์‹คํ—˜ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” ๋Œ€๋ฆฌ ์ „๋ฌธ๊ฐ€๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ๋งํ•ด์•ผํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์œ„์˜ ์ •ํ™•ํ•œ ์ง„์ˆ ์— ๋Œ€ํ•ด ์‹ค์ œ๋กœ ์–ธ๊ธ‰ ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ kubeadm์— ๊ธฐ์—ฌํ•˜์—ฌ ํ”„๋ก์‹œ ๋’ค์˜ ๋™์ž‘์„ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ์€ ๊ด€๋ จ go ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.
https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/phases/controlplane/manifests.go#L432

func getProxyEnvVars() []v1.EnvVar {
    envs := []v1.EnvVar{}
    for _, env := range os.Environ() {
        pos := strings.Index(env, "=")
        if pos == -1 {
            // malformed environment variable, skip it.
            continue
        }
        name := env[:pos]
        value := env[pos+1:]
        if strings.HasSuffix(strings.ToLower(name), "_proxy") && value != "" {
            envVar := v1.EnvVar{Name: name, Value: value}
            envs = append(envs, envVar)
        }
    }
    return envs
}

https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/preflight/checks.go#L291

// HTTPProxyCheck checks if https connection to specific host is going
// to be done directly or over proxy. If proxy detected, it will return warning.
type HTTPProxyCheck struct {
    Proto string
    Host  string
    Port  int
}

func (hst HTTPProxyCheck) Check() (warnings, errors []error) {

    url := fmt.Sprintf("%s://%s:%d", hst.Proto, hst.Host, hst.Port)

    req, err := http.NewRequest("GET", url, nil)
    if err != nil {
        return nil, []error{err}
    }

    proxy, err := http.DefaultTransport.(*http.Transport).Proxy(req)
    if err != nil {
        return nil, []error{err}
    }
    if proxy != nil {
        return []error{fmt.Errorf("Connection to %q uses proxy %q. If that is not intended, adjust your proxy settings", url, proxy)}, nil
    }
    return nil, nil
}

๊ธฐ์—… ๋„คํŠธ์›Œํฌ์—์„œ ์‚ฌ๋žŒ๋“ค์„ ๊ตฌํ•  ์ˆ˜์žˆ๋Š” ๊ทผ๋ฌด ์‹œ๊ฐ„์„ ์ง„์ง€ํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋” ์ด์ƒ ๋™์˜ ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค

cc @kad @timothysc

@luxas ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ผ์šด๋“œ ํŠœ ์ž‡์„ ์–ป์„ ๋•Œ ๊ทธ๊ฒƒ์„ ํ†ตํ•ด ์ผํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŒจ์น˜๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์ „์— ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ์•ผํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋‹น๋ถ„๊ฐ„ ์ดํƒˆ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ;-)

์ œ๊ฐ€ ์‚ดํŽด๋ณผ ์ฒซ ๋ฒˆ์งธ ํ•˜์œ„ ์งˆ๋ฌธ์€ os.Environ() ๋ฅผ ํ†ตํ•ด ์‹ค์ œ๋กœ ์–ป๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@erikbgithub ํŒจ์น˜ ์ž‘์„ฑ์— ๋„์›€์ด ํ•„์š”ํ•˜๋ฉด ์•Œ๋ ค ์ฃผ์‹œ๋ฉด ๋„์™€ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

@erikbgithub ๊ฐ€ ํ•ด๋‹น ์ˆ˜ํ‘œ์˜ ์›์ €์ž์ด๋ฏ€๋กœ ์งˆ๋ฌธ์— ๋‹ตํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.
์ฒ˜์Œ ๋ช‡ ๊ฐ€์ง€ ๋‹ต๋ณ€ :

  • kubeadm์€ ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ์„ธ์…˜์—์„œ ํ™˜๊ฒฝ์„ ๊ฐ€์ ธ์˜ค๊ณ  ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. $ env | grep -i _proxy= | sort ์„ ์‹คํ–‰ํ•˜๋ฉด ๋ฌด์—‡์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํšŒ์‚ฌ ๋ฐฉํ™”๋ฒฝ ๋‚ด๋ถ€์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    !shell $ env | grep -i _proxy= | sort ALL_PROXY=http://proxy-ir.example.com:911 FTP_PROXY=http://proxy-ir.example.com:911 HTTPS_PROXY=http://proxy-ir.example.com:911 HTTP_PROXY=http://proxy-ir.example.com:911 NO_PROXY=.example.com all_proxy=http://proxy-ir.example.com:911 ftp_proxy=http://proxy-ir.example.com:911 http_proxy=http://proxy-ir.example.com:911 https_proxy=http://proxy-ir.example.com:911 no_proxy=.example.com $
  • ์‚ฌ๋žŒ๋“ค์ด ๊นจ๋‹ซ์ง€ ๋ชปํ•˜๊ณ  ๋ฐŸ๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋Š” no_proxy ๋ณ€์ˆ˜ ๊ฐ€ ๋„คํŠธ์›Œํฌ ๋ฒ”์œ„๋ฅผ ์ง€์› NO_PROXY=10.0.0.0/8, 192.168.0.0/16 ์™€ ๊ฐ™์€ ๊ฒƒ์„ ๋„ฃ์œผ๋ฉด ์•„๋ฌด ํšจ๊ณผ๊ฐ€ ์—†์œผ๋ฉฐ ๋น„ํ–‰ ์ „ ๊ฒ€์‚ฌ์—์„œ ๊ฒฝ๊ณ ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ๋Œ€ / ์†Œ๋ฌธ์ž * _proxy ๋ณ€์ˆ˜์˜ ๋‚ด์šฉ ์ฐจ์ด๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”„๋ก์‹œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” Go ์ฝ”๋“œ์—๋Š” ์ฒ˜๋ฆฌ ์ˆœ์„œ๊ฐ€์žˆ๋Š” ๋‚ด๋ถ€ ๋…ผ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค (๋‚ด๊ฐ€ ๊ธฐ์–ต ํ•˜๋“ฏ์ด ์ฒซ ๋ฒˆ์งธ ๋Œ€๋ฌธ์ž, ๊ทธ๋‹ค์Œ ์†Œ๋ฌธ์ž์ด์ง€๋งŒ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ ์•ฑ์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ์ˆœ์„œ๋ฅผ ๋ณด์žฅ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค).
  • / etc / environment์™€ ๊ฐ™์€ ํŒŒ์ผ์€ ๋ฐฐํฌํŒ๋งˆ๋‹ค ๋‹ค๋ฅด๋ฉฐ ๊ฐ ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ์ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ๋กœ๊ทธ์ธ ์Šคํฌ๋ฆฝํŠธ, PAM ๋ชจ๋“ˆ ๋“ฑ์— ์˜ํ•ด ํ”„๋กœ์„ธ์Šค ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ฝํ˜€์ง€๊ณ  ์ฃผ์ž…๋ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด SSH ์„ธ์…˜์ด๋‚˜ ์™ธ๋ถ€ ๊ด€๋ฆฌ ๋„๊ตฌ (์˜ˆ : ansible)์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ๊ณ  kubeadm๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠน์ • / etc / environment์— ์˜์กดํ•˜๊ฑฐ๋‚˜ ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ๋…ผ๋ฆฌ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • 8 ํฌ์ธํŠธ์˜ ๊ฒฝ์šฐ, ํ”„๋ฆฌ ํ”Œ๋ผ์ดํŠธ ํ™•์ธ์ด ํŠนํžˆ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. kubeadm์ด ํ”„๋ก์‹œ๋ฅผ ํ†ตํ•ด API ์„œ๋ฒ„๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ•˜๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š”์ด ๋น„ํ–‰ ์ „ ํ™•์ธ์— ๋Œ€ํ•ด ๋…ผ์˜ํ–ˆ์ง€๋งŒ ํ•ด๋‹น ์‚ฌ๋ก€๊ฐ€ ํ•ฉ๋ฒ•์  ์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฐ ๋™์˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  ๊ฒฝ๊ณ  ๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • 10 ์ธ : ๋˜ํ•œ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์—๊ฒŒ์„œ ์ด๋Ÿฌํ•œ ๋ณ€์ˆ˜๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋ฐ˜๋Œ€์˜€์Šต๋‹ˆ๋‹ค. (๋‚ด ์ดˆ๊ธฐ ์•„์ด๋””์–ด๋Š” ๋ชจ๋“  * _proxy ์„ค์ •์„ ์‚ญ์ œํ•˜์—ฌ ์ง์ ‘ ์—ฐ๊ฒฐ์„ ๊ฐ•์ œํ•˜๋Š” ๊ฒƒ์ด์—ˆ์ง€๋งŒ ํ”„๋ก์‹œ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•˜๋Š” ํ•ฉ๋ฒ•์  ์ธ ์ด์œ  ์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฑฐ๋ถ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค).

๋‚˜๋Š” ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ IP๋ฅผ NO_PROXY์— ํฌํ•จํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์— ์ฐธ์—ฌํ•  ๋•Œ ๋ชจ๋“  ๋ฏธ๋‹ˆ์–ธ์— ๋™์ผํ•œ NO_PROXY๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ "์ˆ˜์ •"ํ–ˆ์Šต๋‹ˆ๋‹ค.

$ export NO_PROXY = 'ip, ip, ip, ip, .example.com'
[๋งˆ์Šคํ„ฐ] $ kubeadm init
[minion] $ kubeadm join --token = {token} abcd : 6443

์†”์งํžˆ ๋งํ•ด์„œ ๋ชจ๋“  IP ์ฃผ์†Œ๊ฐ€ ์—ด๊ฑฐ๋˜๋Š”์ง€ ์•„๋‹ˆ๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•œ .example.com์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

PR kubernetes / kubernetes # 52788์ด ๋ณ‘ํ•ฉ๋˜๋Š” ๊ฒฝ์šฐ ๋…ธ๋“œ์˜ NO_PROXY IP ๋ฒ”์œ„์—์„œ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ผ์„ ๋งŽ์ด ๋‹จ์ˆœํ™” ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์กฐ๊ธˆ ์ด์ƒํ•ด. "checks.go"์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด.
ํ”„๋ก์‹œ์— ๊ฐ’์ด ์žˆ์œผ๋ฉด ํ•ญ์ƒ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

if proxy! = nil {
return [] error {fmt.Errorf ( "% q์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์€ ํ”„๋ก์‹œ % q๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜๋„ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ”„๋ก์‹œ ์„ค์ •์„ ์กฐ์ •ํ•˜์‹ญ์‹œ์˜ค.", url, proxy)}, nil
}
nil, nil ๋ฐ˜ํ™˜

๊ธฐ์—…์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์„ธ ๊ฐ€์ง€ ํ”„๋ก์‹œ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. (http_proxy, https_proxy, no_proxy)
http_ *๋Š” ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์„ ์œ„ํ•ด ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ํ•„์ˆ˜ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.
no_proxy ์˜ต์…˜์ด ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

"pl, ๋‚ด๋ถ€ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด ํ”„๋ก์‹œ๋กœ ๋ผ์šฐํŒ…๋˜์ง€ ์•Š๋„๋ก ์˜ต์…˜ (no_proxy) ์„ค์ •"

kubeadm join์ด http_proxy๋ฅผ ์ง€์›ํ•˜๋Š”์ง€ ๋ฌป๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

kubeadm init๊ฐ€ http_proxy ๋ฐ no_proxy์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ๊ด€๋ฆฌํ•˜์ง€๋งŒ kubeadm join์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

kubelet.go:2105] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

remote_runtime.go:92] RunPodSandbox from runtime service failed: rpc error: code = Unknown desc = failed pulling image "gcr.io/google_containers/pause-amd64:3.0": Get https://gcr.io/v1/_ping: read tcp <my-ip>:58742->74.125.68.82:443: read: connection reset by peer

๊ทธ๋ฆฌ๊ณ  ๋˜ํ•œ
/ etc / environment๋Š” ๋งˆ์Šคํ„ฐ์—์„œ์™€ ๊ฐ™์ด ๊ตฌ์„ฑ์œผ๋กœ ์ฑ„์›Œ์ง€์ง€ ์•Š๊ณ  ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„ http_proxy ๋ฐ no_proxy๊ฐ€ kubeadm ์กฐ์ธ์— ๋Œ€ํ•ด ์•„์ง ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ฏฟ๊ฒŒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ถ€๋”ช์นฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ํ”„๋ก์‹œ๋ฅผ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๊ณ  ํ”„๋ก์‹œ ๋ฐ no_proxy ์„ค์ •์„ ์ˆ˜์ •ํ•  ์ˆ˜์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

# 687, # 182 ๋˜๋Š” ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ ์ฐธ์กฐ :

๋‚ด ๊ฒฝํ—˜์ƒ kubeadm์€ / etc / environment์— ์ •์˜ ๋œ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝํ—˜์ƒ kubeadm์€ / etc / environment์— ์ •์˜ ๋œ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋„ค-์ œ ๊ฒฝ์šฐ์—๋Š” / etc / environment

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰