λ€
x509: μ μ μλ κΈ°κ΄μ΄ μλͺ ν μΈμ¦μ -- κΈ°μ λ€νΈμν¬ λ΄λΆ
μ€λ³΅λλ νλͺ©μ μ°ΎμΌλ©΄ λμ κ±°κΈ°μ λ΅μ₯νκ³ μ΄ νμ΄μ§λ₯Ό λ«μμΌ ν©λλ€.
μ€λ³΅ νλͺ©μ μ°Ύμ§ λͺ»ν κ²½μ° μ΄ μΉμ μ μμ νκ³ κ³μ μ§ννμμμ€.
BUG REPORT λλ FEATURE REQUEST μ€ νλλ₯Ό μ ννμμμ€.
λ²κ·Έ λ³΄κ³ μ
kubeadm λ²μ ( kubeadm version
): --1.10.4
kubeadm λ²μ : &version.Info{μ£Όμ:"1", λΆ:"10", GitVersion:"v1.10.4", GitCommit:"5ca598b4ba5abb89bb773071ce452e33fb66339d", GitTreeState:"2016T0:"clean", BuildDate::0 59Z", GoVersion:"go1.9.3", μ»΄νμΌλ¬:"gc", νλ«νΌ:"linux/amd64"}
νκ²½ :
kubectl version
):CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="μΌν μ€"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
uname -a
):μ€λ₯ x509 λ°μ: μ μ μλ κΈ°κ΄μμ μλͺ ν μΈμ¦μ
μ€λ₯ μμ΄ kubeadm initλ₯Ό μ€νν΄μΌ ν©λλ€.
μ¬λ¬ νμΌμ νλ‘μλ₯Ό ꡬμ±νμ΅λλ€.
.bash_profile
/etc/νκ²½
/etc/systemd/system/docker.service.d/http-proxy.conf
/etc/systemd/system/docker.service.d/http-proxy.conf
[μλΉμ€]
νκ²½="HTTP_PROXY=http://
νκ²½="HTTPS_PROXY=https://
νκ²½ = "NO_PROXY = λ‘컬 νΈμ€νΈ, 127.0.0.1,10.169.150.123"
/etc/νκ²½
λ΄λ³΄λ΄κΈ° http_proxy="http://
λ΄λ³΄λ΄κΈ° https_proxy="https://
λ΄λ³΄λ΄κΈ° HTTP_PROXY="http://
λ΄λ³΄λ΄κΈ° HTTPS_PROXY="https://
λ΄λ³΄λ΄κΈ° no_proxy="10.169.150.123,127.0.0.1,localhost"
IN λ°°μ¬ νλ‘ν
λ΄λ³΄λ΄κΈ° KUBECONFIG=/etc/kubernetes/admin.conf
λ΄λ³΄λ΄κΈ° http_proxy="http://
λ΄λ³΄λ΄κΈ° https_proxy="https://
λ΄λ³΄λ΄κΈ° HTTP_PROXY="http://
λ΄λ³΄λ΄κΈ° HTTPS_PROXY="https://
λ΄λ³΄λ΄κΈ° no_proxy="10.169.150.123,127.0.0.1,localhost"
κ³ μμ΄ /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2379-2380 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10250 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10251 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10252 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10255 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
λ°©νλ²½μ λ€μ λ‘λνμ΅λλ€.
λν λ°©νλ²½μ λΉνμ±ννμ¬ νμΈνμ΅λλ€.
λΉνμ±νλ SELINUX
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
[μλΉμ€]
νκ²½="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true"
νκ²½="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.local"
Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"
νκ²½="KUBELET_CADVISOR_ARGS=--cadvisor-port=0"
νκ²½="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
Environment="KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true --cert-dir=/var/lib/kubelet/pki"
νκ²½="KUBELET_EXTRA_ARGS=--fail-swap-on=false"
μ€ν μμ=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CGROUP_ARGS $FICATELEET_CERTI
λ²μ μ μ λ¬νμ¬ μ€ννλ©΄
[ root@kubem1 ~]# kubeadm μ΄κΈ°ν --kubernetes-version=v1.10.4
[μ΄κΈ°ν] Kubernetes λ²μ μ¬μ©: v1.10.4
[μ΄κΈ°ν] κΆν λΆμ¬ λͺ¨λ μ¬μ©: [λ
Έλ RBAC]
[μ€ν μ ] μ€ν μ κ²μ¬λ₯Ό μ€νν©λλ€.
[κ²½κ³ HTTPProxyCIDR]: "10.96.0.0/12"μ λν μ°κ²°μ νλ‘μ "https:// * * * * "λ₯Ό μ¬μ©ν©λλ€. μ΄λ‘ μΈν΄ ν΄λ¬μ€ν° μ€μ μ΄ μ λλ‘ μλνμ§ μμ μ μμ΅λλ€. ν¬λ λ° μλΉμ€ IP λ²μκ° νλ‘μ ꡬμ±μμ μμΈλ‘ μ¬λ°λ₯΄κ² μ§μ λμλμ§ νμΈν©λλ€.
[μΈμ¦μ] CA μΈμ¦μ λ° ν€λ₯Ό μμ±νμ΅λλ€.
[μΈμ¦μ] μμ±λ apiserver μΈμ¦μ λ° ν€μ
λλ€.
[μΈμ¦μ] apiserver μλΉ μΈμ¦μλ DNS μ΄λ¦ [kubem1]μ λν΄ μλͺ
λμμ΅λλ€.
[μΈμ¦μ] apiserver-kubelet-client μΈμ¦μ λ° ν€λ₯Ό μμ±νμ΅λλ€.
[μΈμ¦μ] sa ν€μ κ³΅κ° ν€λ₯Ό μμ±νμ΅λλ€.
[μΈμ¦μ] μμ±λ front-proxy-ca μΈμ¦μ λ° ν€μ
λλ€.
[μΈμ¦μ] μμ±λ νλ°νΈ νλ‘μ ν΄λΌμ΄μΈνΈ μΈμ¦μ λ° ν€μ
λλ€.
[μΈμ¦μ] etcd/ca μΈμ¦μ λ° ν€λ₯Ό μμ±νμ΅λλ€.
[μΈμ¦μ] etcd/server μΈμ¦μ λ° ν€λ₯Ό μμ±νμ΅λλ€.
[μΈμ¦μ] etcd/server μλΉ μΈμ¦μλ DNS μ΄λ¦ [localhost] λ° IP [127.0.0.1]μ λν΄ μλͺ
λμμ΅λλ€.
[μΈμ¦μ] etcd/νΌμ΄ μΈμ¦μ λ° ν€λ₯Ό μμ±νμ΅λλ€.
[μΈμ¦μ] etcd/νΌμ΄ μλΉμ€ μΈμ¦μλ DNS μ΄λ¦ [kubem1. * * ** ] λ° IP [10.169.150.123]
[μΈμ¦μ] etcd/healthcheck-client μΈμ¦μ λ° ν€λ₯Ό μμ±νμ΅λλ€.
[μΈμ¦μ] μμ±λ apiserver-etcd-client μΈμ¦μ λ° ν€μ
λλ€.
[μΈμ¦μ] μ ν¨ν μΈμ¦μ λ° ν€κ° μ΄μ "/etc/kubernetes/pki"μ μμ΅λλ€.
[kubeconfig] λμ€ν¬μ KubeConfig νμΌ μμ±: "/etc/kubernetes/admin.conf"
[kubeconfig] λμ€ν¬μ KubeConfig νμΌ μμ±: "/etc/kubernetes/kubelet.conf"
[kubeconfig] λμ€ν¬μ KubeConfig νμΌ μμ±: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] λμ€ν¬μ KubeConfig νμΌ μμ±: "/etc/kubernetes/scheduler.conf"
[controlplane] κ΅¬μ± μμ kube-apiserverμ λν Static Pod 맀λνμ€νΈλ₯Ό "/etc/kubernetes/manifests/kube-apiserver.yaml"μ μμ±νμ΅λλ€.
[controlplane] κ΅¬μ± μμ kube-controller-managerμ λν Static Pod 맀λνμ€νΈλ₯Ό "/etc/kubernetes/manifests/kube-controller-manager.yaml"μ μμ±νμ΅λλ€.
[μ μ΄ν] κ΅¬μ± μμ kube-schedulerμ λν μ μ ν¬λ 맀λνμ€νΈλ₯Ό "/etc/kubernetes/manifests/kube-scheduler.yaml"μ μμ±νμ΅λλ€.
[etcd] λ‘컬 etcd μΈμ€ν΄μ€μ λν Static Pod 맀λνμ€νΈλ₯Ό "/etc/kubernetes/manifests/etcd.yaml"μ μμ±νμ΅λλ€.
[μ΄κΈ°ν] kubeletμ΄ "/etc/kubernetes/manifests" λλ ν 리μμ Static Podλ‘ μ»¨νΈλ‘€ νλ μΈμ λΆν
νκΈ°λ₯Ό κΈ°λ€λ¦½λλ€.
[μ΄κΈ°ν] μ μ΄ νλ©΄ μ΄λ―Έμ§λ₯Ό κ°μ ΈμμΌ νλ κ²½μ° 1λΆ μ΄μ 걸릴 μ μμ΅λλ€.
6μ 22μΌ 04:31:34 kubem1. * * * * kubelet[7275]: E0622 04:31:34.942572 7275 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:47: λμ΄ μ€ν¨ *v1.Pod: https κ°μ Έμ€κΈ° * * * * &limit=500&resourceVersion=0: λ€μ΄μΌ tcp 10.169.150.123:6443: getsockopt: μ°κ²° κ±°λΆ
6μ 22μΌ 04:31:35 kubem1. * * * * kubelet[7275]: E0622 04:31:35.888104 7275 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:461: *v1.Nodeλ₯Ό λμ΄νμ§ λͺ»νμ΅λλ€ . /10.169.150.123 :6443/api/v1/nodes?fieldSelector=metadata.name%3Dkubem1. * * * * &limit=500&resourceVersion=0: λ€μ΄μΌ tcp 10.169.150.123:6443: getsockopt: μ°κ²° κ±°λΆ
6μ 22μΌ 04:31:35 kubem1. * * * * kubelet[7275]: E0622 04:31:35.888256 7275 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:452: *v1.Service: https:/ λ₯Ό λμ΄νμ§ λͺ»νμ΅λλ€
6μ 22μΌ 04:31:35 kubem1. * * * * kubelet[7275]: E0622 04:31:35.943992 7275 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:47: v1.Pod λμ΄ μ€ν¨ * * * * &limit=500&resourceVersion=0: λ€μ΄μΌ tcp 10.169.150.123:6443: getsockopt: μ°κ²° κ±°λΆ
6μ 22μΌ 04:31:36 kubem1. * * * * kubelet[7275]: E0622 04:31:36.889648 7275 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:461: λμ΄νμ§ λͺ»νμ΅λλ€. *v1.Node: Get https:/ /10.169.150.123 :6443/api/v1/nodes?fieldSelector=metadata.name%3Dkubem1. * * * * &limit=500&resourceVersion=0: λ€μ΄μΌ tcp 10.169.150.123:6443: getsockopt: μ°κ²° κ±°λΆ
6μ 22μΌ 04:31:36 kubem1. * * * * kubelet[7275]: E0622 04:31:36.891490 7275 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:452: λμ΄νμ§ λͺ»νμ΅λλ€. *v1.Service: https:/ /10.169.150.123 :6443/api/v1/services?limit=500&resourceVersion=0: λ€μ΄μΌ tcp 10.169.150.123:6443: getsockopt: μ°κ²° κ±°λΆ
6μ 22μΌ 04:31:36 kubem1. * * * * kubelet[7275]: E0622 04:31:36.945185 7275 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:47: v1.Pod λμ΄ μ€ν¨ * * * * &limit=500&resourceVersion=0: λ€μ΄μΌ tcp 10.169.150.123:6443: getsockopt: μ°κ²° κ±°λΆ
6μ 22μΌ 04:31:37 kubem1. * * * * kubelet[7275]: E0622 04:31:37.890407 7275 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:461: λμ΄μ μ€ν¨νμ΅λλ€. *v1.Node: Get https:/ /10.169.150.123 :6443/api/v1/nodes?fieldSelector=metadata.name%3Dkubem1. * * * * &limit=500&resourceVersion=0: λ€μ΄μΌ tcp 10.169.150.123:6443: getsockopt: μ°κ²° κ±°λΆ
6μ 22μΌ 04:31:37 kubem1. * * * * kubelet[7275]: E0622 04:31:37.891696 7275 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:452: λμ΄νμ§ λͺ»νμ΅λλ€. *v1.Service: Get https:/ /10.169.150.123 :6443/api/v1/services?limit=500&resourceVersion=0: λ€μ΄μΌ tcp 10.169.150.123:6443: getsockopt: μ°κ²° κ±°λΆ
6μ 22μΌ 04:31:37 kubem1. * * * * kubelet[7275]: E0622 04:31:37.946023 7275 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:47: v1.Pod λμ΄ μ€ν¨ * * * * &limit=500&resourceVersion=0: λ€μ΄μΌ tcp 10.169.150.123:6443: getsockopt: μ°κ²° κ±°λΆ
6μ 22μΌ 04:31:38 kubem1. * * * * kubelet[7275]: E0622 04:31:38.121910 7275 eviction_manager.go:247] ν΄κ±° κ΄λ¦¬μ: μμ½ ν΅κ³ κ°μ Έμ€κΈ° μ€ν¨: λ
Έλ μ 보 κ°μ Έμ€κΈ° μ€ν¨: λ
Έλ "kubem1. * * * * "μ(λ₯Ό) μ°Ύμ μ μμ
6μ 22μΌ 04:31:38 kubem1. * * * * kubelet[7275]: E0622 04:31:38.892292 7275 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:461: λμ΄μ μ€ν¨νμ΅λλ€. *v1.Node: Get https:/ /10.169.150.123 :6443/api/v1/nodes?fieldSelector=metadata.name%3Dkubem1. * * * * &limit=500&resourceVersion=0: λ€μ΄μΌ tcp 10.169.150.123:6443: getsockopt: μ°κ²° κ±°λΆ
6μ 22μΌ 04:31:38 kubem1. * * * * kubelet[7275]: E0622 04:31:38.894157 7275 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:452: λμ΄νμ§ λͺ»νμ΅λλ€. *v1.Service: https:/λ₯Ό κ°μ Έμ΅λλ€.
6μ 22μΌ 04:31:38 kubem1. * * * * kubelet[7275]: E0622 04:31:38.947002 7275 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:47: v1.Pod λμ΄ μ€ν¨ * * * * &limit=500&resourceVersion=0: λ€μ΄μΌ tcp 10.169.150.123:6443: getsockopt: μ°κ²° κ±°λΆ
/etc/resolve.confλ μΆκ°λ¨
[ root@kubem1 ~]# κ³ μμ΄ /etc/resolv.conf
λ€μμλ² 8.8.8.8
λ€μμλ² 8.8.4.4
μ΄ νμΌμ νλͺ©μ μΆκ°ν΄μΌ ν©λκΉ?
μΈμ¦μλ₯Ό κ°μ ΈμμΌ νλμ??
λλ νλ‘μ νκ²½μ μμ΅λλ€
λν μλλ₯Ό μλνμ΅λλ€.
kubeadm μ¬μ€μ
systemctl λ°λͺ¬ λ€μ λ‘λ
systemctl docker.service λ€μ μμ
systemctl μ€μ§ kubelet.service
μλ μ΄λ―Έμ§λ λ컀λ₯Ό ν΅ν΄ κ°μ Έμ¬ μ μμ΅λλ€.
λ컀 ν k8s.gcr.io/kube-apiserver-amd64:v1.10.3
λ컀 ν k8s.gcr.io/kube-controller-manager-amd64:v1.10.3
λ컀 ν k8s.gcr.io/kube-scheduler-amd64:v1.10.3
λ컀 ν k8s.gcr.io/etcd-amd64:3.1.12
μ¬κΈ°μμ νΈμ§λ FQDNμΌλ‘ 보μ΄λ spec.nodeName=kubem1.*****************
λ₯Ό λ³Ό μ μμ΅λλ€. λ°λ©΄μ DNS ꡬμ±μλ λλ©μΈ λ° κ²μ μ§μλ¬Έμ΄ μλ κ² κ°μ΅λλ€.
Google DNS μλ²κ° λ€νΈμν¬μμλ νμ©λ©λκΉ? μ΄μ λν μΆκ° μ 보λ λ‘컬 λ€νΈμν¬ κ΄λ¦¬μμκ² λ¬Έμν΄μΌ ν μ μμ΅λλ€.
λν docker pull
κ° μ€ν¨νλ©΄ DNS λ¬Έμ λλ¬ΈμΌ μ μμ΅λλ€. docker pull
μ΄(κ°) μ€ν¨νλ μ€λ₯λ 무μμ
λκΉ?
k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:47: Failed to list v1.Pod: Get https://10.169.150.123:6443/api/v1/pods?fieldSelector=spec.nodeName%3Dkubem1.*****************&limit=500&resourceVersion=0: dial tcp 10.169.150.123:6443: getsockopt: connection refused
github 'spec.nodeName=kubem1.xml'μ κ²μνκΈ° μν΄ μ΄κ²μ νΈμ§νμ΅λλ€. * * * * * '
Google DNSλ μ°λ¦¬ λ€νΈμν¬μμ νμ©λμ§ μμ΅λλ€.
Docker pullμ λλ¨Έμ§ μ΄λ―Έμ§μ λν΄ μλνμ§λ§ "docker pull k8s.gcr.io/kube-apiserver-amd64:v1.10.3"μ λΉκΈ°λ κ²μ μλνμ§ μμ΅λλ€.
κ΅¬μ± νμΌμ μμ ν΄μΌ νλ κ²½μ° μλ €μ£Όμμμ€.
/ν λΉ @liztio
νμ€ν μ¬μμ° μ§μΉ¨μ΄ μκΈ° λλ¬Έμ μ΄ λ¬Έμ λ₯Ό μ’
λ£ν©λλ€.
κ·Έλλ λ¬Έμ κ° μμΌλ©΄ λ€μ μ΄μ΄μ£ΌμΈμ.
κ°μ₯ μ μ©ν λκΈ
μ¬κΈ°μμ νΈμ§λ FQDNμΌλ‘ 보μ΄λ
spec.nodeName=kubem1.*****************
λ₯Ό λ³Ό μ μμ΅λλ€. λ°λ©΄μ DNS ꡬμ±μλ λλ©μΈ λ° κ²μ μ§μλ¬Έμ΄ μλ κ² κ°μ΅λλ€.Google DNS μλ²κ° λ€νΈμν¬μμλ νμ©λ©λκΉ? μ΄μ λν μΆκ° μ 보λ λ‘컬 λ€νΈμν¬ κ΄λ¦¬μμκ² λ¬Έμν΄μΌ ν μ μμ΅λλ€.
λν
docker pull
κ° μ€ν¨νλ©΄ DNS λ¬Έμ λλ¬ΈμΌ μ μμ΅λλ€.docker pull
μ΄(κ°) μ€ν¨νλ μ€λ₯λ 무μμ λκΉ?