kubeadm init๋ฅผ ์คํํ ๋ kubeadm์ ๊ตฌ์ฑ์ ์ ๊ณตํ๋ ค๊ณ ํฉ๋๋ค.
ํ ํฐ์ ๋ณ๊ฒฝํ๋ ๋ฑ ์ ํํ ํ์์ ๊ตฌ์ฑ์ด ์์์ ํ์ธํ์ต๋๋ค.
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
kubernetesVersion: v1.4.4
secrets:
givenToken: 123456.3123fe2e098799f3
๊ทธ๋ฅ ์๋ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ kubeadm ์ถ๋ ฅ์์
๊ทธ๋ฌ๋ ๋ค๋ฅธ yaml์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด ์์ ์ crt ํ์ผ์ ์ง์ ํ๊ณ ์ถ์ต๋๋ค.
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
kubernetesVersion: v1.4.4
etcd:
caFile : /root/easy-rsa-master/easyrsa3/pki/ca.crt
certFile : /root/easy-rsa-master/easyrsa3/pki/issued/kubernetes-master.crt
keyFile : /root/easy-rsa-master/easyrsa3/pki/private/kubernetes-master.key
์ถ๋ ฅ์กฐ์ฐจ ๋์ง ์๋๋ค.
kubeadm์ด config(?)
์ด๊ฒ์ ๋๋ฒ๊น
ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
kubeadm config ๊ตฌ๋ฌธ์ ๋ํ ๋ฌธ์๋ ์ด๋์ ์์ต๋๊น?
https://kubernetes.io/docs/admin/kubeadm/ ๋์ ์ํ ๋ง์คํฐ ๊ตฌ์ฑ๋ง ์์ต๋๋ค.
https://kubernetes.io/docs/admin/kube-apiserver/ ์์ ์ง์๋๋ api-servers์ ๋ํ ๋ค๋ฅธ ๋ช
๋ น์ค ๊ฐ์ ์ง์ ํ๋ ค๋ ๊ฒฝ์ฐ ํด๋น ์ด๋ฆ์ ๋ฌด์์
๋๊น?
์๋ฅผ ๋ค์ด kubeadm init config.yaml์์ api ์๋ฒ์ฉ --tls-private-key-file์ ์ง์ ํ๋ ค๋ฉด ํด๋น ์ด๋ฆ์ ๋ฌด์์ ๋๊น? tlsPrivateKeyFile์ ๋๊น?
@Lokicity ๋ด๊ฐ ์ดํดํ๋ ๋ฐ์ ๋ฐ๋ฅด๋ฉด ์คํ ์ค์๋ ์ ์ด ๊ณํ์ ๊ตฌ์ฑ์ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ํด๋น ๊ตฌ์ฑ ์์๋ฅผ ๋ค์ ์์ํด์ผ ํฉ๋๋ค.
ํ ํฐ ๋ฌธ์ ์ ๊ฒฝ์ฐ ํ ํฐ์ ์ ๋ฌํ์ง ์์ผ๋ฉด ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค.
๋ค. ๊ทธ๋ฌ๋ kubeadm init์๋ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์๋ --config๊ฐ ์์ต๋๋ค. API ์๋ฒ์ ๋ํด ์ํ๋ ํน์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์ต๋๊น? ์๋ฅผ ๋ค์ด, kubeadm์์ ์์ฑ๋ ๊ธฐ๋ณธ ์๋ฒ๊ฐ ์๋ api ์๋ฒ์ ์์ฒด --tls-private-key-file์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.
kubeadm ์ด๊ธฐํ ์๊ฐ์ ๊ทธ๋ ๊ฒ ํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค.
๊ตฌ์ฑ ์์ ๊ฐ ๋ค์ ๋ฌธ์์ ์ถ๊ฐ๋์์ต๋๋ค.
@jistr ๊ทํ์ ์์ ๋งํฌ๋ฅผ ๋ฐ๋ฅด์ญ์์ค. ์๋ yaml ํ์ผ์ ์ฌ์ฉํ์ต๋๋ค.
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
etcd:
endpoints:
- http://127.0.0.1:2379
config ํ์ผ๋ก ์ ์ฅํ์ง๋ง etcd ์๋ํฌ์ธํธ๋ ๋ฐ์ํ์ง ์์ต๋๋ค(์ฌ์ ํ nil).
kubeadm.MasterConfiguration{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, API:kubeadm.API{AdvertiseAddress:"192.168.180.53", BindPort:6443}, Etcd:kubeadm.Etcd{Endpoints:[]string(nil), CAFil
e:"", CertFile:"", KeyFile:""}, Networking:kubeadm.Networking{ServiceSubnet:"10.96.0.0/12", PodSubnet:"", DNSDomain:"cluster.local"}, KubernetesVersion:"v1.6.0", CloudProvider:"", AuthorizationM
ode:"RBAC", Token:"8f6cc5.9fdf609145758fbd", TokenTTL:0, SelfHosted:false, APIServerExtraArgs:map[string]string(nil), ControllerManagerExtraArgs:map[string]string(nil), SchedulerExtraArgs:map[st
ring]string(nil), APIServerCertSANs:[]string(nil), CertificatesDir:"/etc/kubernetes/pki"}
๋ด๊ฐ ์ด๋์์ ์ค์๋ฅผ ํ๋์ง ์๋๋ฉด ์ฝ๋ ๋ฒ๊ทธ์ธ์ง ๊ถ๊ธํฉ๋๋ค.
์๋ ํ์ธ์,
@WIZARD-CXY์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ด์ ๋ํ ์
๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๊ฐ์ฌ ํด์!
cc @jamiehannaford
etcd ์ฌ๋ผ์ด์ค๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ๋ฌธ ๋ถ์๋์ง ์๋์ง ์ดํด๋ณด๊ณ ํ์ธํ ์ ์์ต๋๊น?
@WIZARD-CXY @akarasik kubeadm
๋ฐ etcd
์ ๋ฒ์ ์ ๋ฌด์์
๋๊น? ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์๋ํ๊ณ ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค.
root<strong i="9">@c1</strong>: kubeadm version
kubeadm version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.3", GitCommit:"0480917b552be33e2dba47386e51decb1a211df6", GitTreeState:"clean", BuildDate:"2017-05-10T15:38:08Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"}
root<strong i="10">@c1</strong>: curl 127.0.0.1:2379/version
{"etcdserver":"3.1.7","etcdcluster":"3.1.0"}
root<strong i="11">@c1</strong>: cat config.yaml
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
etcd:
endpoints:
- http://127.0.0.1:2379
root<strong i="12">@c1</strong>: kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system kube-controller-manager-c1 1/1 Running 0 49s
kube-system kube-dns-3913472980-vxldm 0/3 Pending 0 45s
kube-system kube-proxy-2d3q4 1/1 Running 0 45s
kube-system kube-scheduler-c1 1/1 Running 0 56s
๋ํ kubeadm.MasterConfiguration
๊ตฌ์กฐ์ฒด์ ์ก์ธ์คํ ์์น๋ ์ด๋์
๋๊น? ์๋์ผ๋ก ๋คํ๋์์ต๋๊น ์๋๋ฉด ํ์ผ์ ๋๋ฒ๊ทธ ๋
ผ๋ฆฌ๋ฅผ ์ถ๊ฐํ์ต๋๊น?
@jamiehannaford kubeadm 1.6.1 etcd 3.0.17
๊ฐ๋จํ ๋๋ฒ๊ทธ ์ธ์๋ฅผ ํตํด kubeadm.MasterConfiguration ๊ตฌ์กฐ์ฒด๋ฅผ ์ป์์ต๋๋ค. ์๋ง๋ kubeadm์ ์
๊ทธ๋ ์ด๋ํ๊ณ ์ค๋ ๋ค์ ์๋ํ๊ณ ์ฌ๊ธฐ์์ ๊ฒฐ๊ณผ๋ฅผ ์
๋ฐ์ดํธํ๊ฒ ์ต๋๋ค. ๋น์ ์ ๋์์ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค
@jamiehannaford kubeadm 1.6.3์ ๋งค๋ ฅ์ฒ๋ผ ์๋ํฉ๋๋ค.
@Lokicity ์ต์ ๋ฒ์ ์ kubeadm์์ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๊น?
๊ณ ์ ์ข ๋ฃ... :+1:
https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1 ์์ v1.14์ ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
apiVersion: kubeadm.k8s.io/v1beta1
kind: InitConfiguration
bootstrapTokens:
- token: "9a08jv.c0izixklcxtmnze7"
description: "kubeadm bootstrap token"
ttl: "24h"
- token: "783bde.3f89s0fje9f38fhf"
description: "another bootstrap token"
usages:
- authentication
- signing
groups:
- system:bootstrappers:kubeadm:default-node-token
nodeRegistration:
name: "ec2-10-100-0-1"
criSocket: "/var/run/dockershim.sock"
taints:
- key: "kubeadmNode"
value: "master"
effect: "NoSchedule"
kubeletExtraArgs:
cgroup-driver: "cgroupfs"
localAPIEndpoint:
advertiseAddress: "10.100.0.1"
bindPort: 6443
---
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
etcd:
# one of local or external
local:
imageRepository: "k8s.gcr.io"
imageTag: "3.2.24"
dataDir: "/var/lib/etcd"
extraArgs:
listen-client-urls: "http://10.100.0.1:2379"
serverCertSANs:
- "ec2-10-100-0-1.compute-1.amazonaws.com"
peerCertSANs:
- "10.100.0.1"
# external:
# endpoints:
# - "10.100.0.1:2379"
# - "10.100.0.2:2379"
# caFile: "/etcd/kubernetes/pki/etcd/etcd-ca.crt"
# certFile: "/etcd/kubernetes/pki/etcd/etcd.crt"
# keyFile: "/etcd/kubernetes/pki/etcd/etcd.key"
networking:
serviceSubnet: "10.96.0.0/12"
podSubnet: "10.100.0.1/24"
dnsDomain: "cluster.local"
kubernetesVersion: "v1.12.0"
controlPlaneEndpoint: "10.100.0.1:6443"
apiServer:
extraArgs:
authorization-mode: "Node,RBAC"
extraVolumes:
- name: "some-volume"
hostPath: "/etc/some-path"
mountPath: "/etc/some-pod-path"
readOnly: false
pathType: File
certSANs:
- "10.100.1.1"
- "ec2-10-100-0-1.compute-1.amazonaws.com"
timeoutForControlPlane: 4m0s
controllerManager:
extraArgs:
"node-cidr-mask-size": "20"
extraVolumes:
- name: "some-volume"
hostPath: "/etc/some-path"
mountPath: "/etc/some-pod-path"
readOnly: false
pathType: File
scheduler:
extraArgs:
address: "10.100.0.1"
extraVolumes:
- name: "some-volume"
hostPath: "/etc/some-path"
mountPath: "/etc/some-pod-path"
readOnly: false
pathType: File
certificatesDir: "/etc/kubernetes/pki"
imageRepository: "k8s.gcr.io"
useHyperKubeImage: false
clusterName: "example-cluster"
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
# kubelet specific options here
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
# kube-proxy specific options here
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ตฌ์ฑ ์์ ๊ฐ ๋ค์ ๋ฌธ์์ ์ถ๊ฐ๋์์ต๋๋ค.
https://kubernetes.io/docs/admin/kubeadm/#config -ํ์ผ