ããã¯/ etc / environmentã§ã¯ãªããkubeadmãå®è¡ãããŠããçŸåšã®bashã»ãã·ã§ã³ã§ã¯ãªããdockerãŸãã¯kubeletç°å¢ã§ããããŸããã ããããã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ã§no_proxy
ãç°ãªãå€ã«èšå®ããããšã§ãããã確èªããŸããã ãããŠãããã€ãã®çç±ã§åŸã«kubeadm init
ããã¯ãŸã ã®ããã«å¥ã®å€ãèšå®ãç¶ããŠno_proxy
ã åèµ·åãããŒã¢ã³ã®åèªã¿èŸŒã¿ããµãŒãã¹ã®åèµ·åã¯ãã¹ãŠããã®äºå®ãå€ãããã®ã§ã¯ãããŸããã
æ£çŽãªãšãããå€ã®ååŸå
ãæå®ããã®ã§ã¯ãªãããIPã¢ãã¬ã¹fo.oo.ba.rrã®ãããã·ãblubbã«èšå®ãããŠããŸãããšããè¡ã ããåºåããã®ã¯æ¬åœã«é¢åã§ãã ãããŠããããã·èšå®ã«é¢ããŠçã®ä¿¡é Œã§ããå¯äžã®æ
å ±æºã§ãã/ etc / environmentããŸãã¯æãç°¡åãªkubeadm
ãåŒã³åºãçŸåšã®bashã»ãã·ã§ã³ããå€ãåçŽã«èªã¿åããªãã®ã¯ãªãã§ãããå€æŽãå ããå Žæã¯ïŒ
ç§ãæåŸ ããã®ã¯æ¬¡ã®ãããªãã®ã§ãïŒ
http_proxy
ãã§ãã¯ããŸãã ïŒãŸãã¯ãå®å
šãªéä¿¡ãæ§æãããŠããå Žåã¯https_proxy
ïŒHTTP_PROXY
ããã§ãã¯ããç°ãªãå Žåã¯èŠåããŸããhttp_proxy
ããã§ãã¯ããŸãã éãå Žåã¯èŠåããŸããkubeadm reset
åŒã³åºããŸããno_proxy
ã®èšå®ïŒããã¯ã«ãããåŸãããšãã§ãããšã³ããè¿œå ããŸãïŒã <-ãŸãã no_proxy
ã¯å®éã«ã¯IPã§ã¯ãªãååã察象ãšããŠãããããå¯èœã§ããã°ãã¹ãåã䜿çšããæ¹ãã¯ããã«åªããŠããŸãããšã³ã¿ãŒãã©ã€ãºãããã¯ãŒã¯ã®äººã ãã©ãã ãã®åŽåæéç¯çŽã§ããããçå£ã«è¡šçŸããããšã¯ã§ããŸããã
@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 ãã©ããªè³ªåã«ãåãã§ãçãããŸãã
æåã®ããã€ãã®çãïŒ
$ 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=10.0.0.0/8, 192.168.0.0/16
ãããªãã®ãå
¥ããŠãå¹æã¯ãªããé£è¡åã®ãã§ãã¯ã§èŠåã衚瀺ãããŸãããã¹ãŠã®ã¯ã©ã¹ã¿ãŒããŒãIPãNO_PROXYã«å«ããã¯ã©ã¹ã¿ãŒã«åå ãããšãã«ãã¹ãŠã®ãããªã³ã§åãNO_PROXYã䜿çšããããšã§ããã®åé¡ããä¿®æ£ãããŸããã
$ export NO_PROXY = 'ipãipãipãipã.example.com'
[ãã¹ã¿ãŒ] $ kubeadm init
[ãããªã³] $ kubeadm join --token = {token} abcdïŒ6443
æ£çŽãªãšãããåæãããŠãããã¹ãŠã®IPã¢ãã¬ã¹ãªã®ããåé¡ãä¿®æ£ãã.example.comãªã®ãã¯ããããŸããã
PR kubernetes / kubernetesïŒ52788ãããŒãžãããå ŽåãããŒãã®NO_PROXYIPç¯å²ã§æå®ããããšãå¯èœã«ãªããŸãã ããã¯ç©äºã倧ãã«åçŽåããã§ãããã
å°ããããããªã£ãã ã³ãŒããchecks.goãã調ã¹ããšã
ãããã·ã«å€ãããå Žåã¯åžžã«ãšã©ãŒã¡ãã»ãŒãžãè¿ããŸãã
ãããã·ã®å ŽåïŒ= nil {
return [] error {fmt.ErrorfïŒ "ïŒ qãžã®æ¥ç¶ã¯ãããã·ïŒ qã䜿çšããŸãããããæå³ãããŠããªãå Žåã¯ããããã·èšå®ã調æŽããŠãã ãã"ãurlãproxyïŒ}ãnil
}
nilãnilãè¿ããŸã
ãšã³ã¿ãŒãã©ã€ãºã§ã¯...å¿
ç¶çã«3ã€ã®ãããã·ãªãã·ã§ã³ããããŸãã ïŒhttp_proxyãhttps_proxyãno_proxyïŒ
http_ *ã¯ãã€ã³ã¿ãŒãããã«æ¥ç¶ããããã«ã€ã¡ãŒãžããã«ããããã®å¿
é ãªãã·ã§ã³ã§ãã
no_proxyãªãã·ã§ã³ãèšå®ãããŠããå Žåã¯ããšã©ãŒã¡ãã»ãŒãžãè¿ãããŸãã
ãplãå éšæ¥ç¶ã®ããã«ãããã·ã«ã«ãŒãã£ã³ã°ãããªãããã«ãªãã·ã§ã³ïŒno_proxyïŒãèšå®ããŠãã ããã
kubeadm joinãhttp_proxyããµããŒãããŠãããã©ãããå°ãããã§ããïŒ
kubeadm initãhttp_proxyãšno_proxyã§åäœãããããšãã§ããŸããããkubeadmjoinã次ã®ãããªãšã©ãŒãçæããããã§ãã
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ãkubeadmjoinã§ãŸã ãµããŒããããŠããªãããšãä¿¡ããããŠãããŸãã
ãã®åé¡ã«ããäžåºŠééããŸãã ããã§ããããã·ãæ£ãã䜿çšãããŠãããããããã·ãšno_proxyã®èšå®ãå€æŽã§ããªãããã§ãã
ïŒ687ãïŒ182ããŸãã¯ã¹ã¿ãã¯ãªãŒããŒãããŒãåç §ããŠãã ããïŒ https ïŒ
ç§ã®çµéšãããkubeadmã¯/ etc / environmentã§å®çŸ©ããããããã·ã䜿çšããŸã
ç§ã®çµéšãããkubeadmã¯/ etc / environmentã§å®çŸ©ããããããã·ã䜿çšããŸã
ãã-ç§ã®å Žåã¯/ etc / environmentã§ããããŸã
æãåèã«ãªãã³ã¡ã³ã
ãã¹ãŠã®ã¯ã©ã¹ã¿ãŒããŒãIPãNO_PROXYã«å«ããã¯ã©ã¹ã¿ãŒã«åå ãããšãã«ãã¹ãŠã®ãããªã³ã§åãNO_PROXYã䜿çšããããšã§ããã®åé¡ããä¿®æ£ãããŸããã
æ£çŽãªãšãããåæãããŠãããã¹ãŠã®IPã¢ãã¬ã¹ãªã®ããåé¡ãä¿®æ£ãã.example.comãªã®ãã¯ããããŸããã