Kubeadm: 쑰인 ν† ν°μ˜ μ‚¬μš©μ„± ν–₯상

에 λ§Œλ“  2017λ…„ 11μ›” 04일  Β·  22μ½”λ©˜νŠΈ  Β·  좜처: kubernetes/kubeadm

/μ’…λ₯˜ κΈ°λŠ₯
@kubernetes/sig-cli
무슨 일이 μžˆμ—ˆλŠ”μ§€ :
kubeadmμ—μ„œ 원본 joun λ¬Έμžμ—΄ 좜λ ₯이 μ—†λŠ” 경우 μƒˆ μ‹œμŠ€ν…œμ„ μΆ”κ°€ν•˜λŠ” 것이 κ·Έλ ‡κ²Œ 쉽지 μ•Šμ€ 경우λ₯Ό λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. "전체 쑰인 λͺ…령을 μƒμ„±ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ? 맀직 λ¬Έμžμ—΄μ— "도달"ν•  수 있으렀면 전체 ν΄λŸ¬μŠ€ν„°λ₯Ό μž¬μ„€μ •ν•΄μ•Ό ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. " (c) @alexellis

μ˜ˆμƒν–ˆλ˜ 일 :
λ§ˆμ°¬κ°€μ§€λ‘œ Docker Swarmμ—μ„œ 항상 λ§ˆμŠ€ν„°μ—κ²Œ 볡사 λΆ™μ—¬λ„£κΈ° κ°€λŠ₯ν•œ 쑰인 λ¬Έμžμ—΄μ„ μΈμ‡„ν•˜μ—¬ μΆ”κ°€ν•˜κ±°λ‚˜ λ™ν™”ν•˜λ„λ‘ μ§€μ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€. 더 λ§Žμ€ 기계.

μ˜ˆμ‹œ μž…λ ₯:

kubeadm token string

좜λ ₯ 예:

kubeadm join --token TOK MASTER_IP:6443 --discovery-token-ca-cert-hash sha256:HASH

μš°λ¦¬κ°€ μ•Œμ•„μ•Ό ν•  λ‹€λ₯Έ 것이 μžˆμŠ΅λ‹ˆκΉŒ? :
당신은 ꡉμž₯ν•˜λ‹€!

(후속 쑰치: https://github.com/kubernetes/kubernetes/pull/41663)
@luxas @mattmoyer @jamiehannaford

areUX prioritimportant-soon

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@zcalusic ν˜„μž¬ 방법은 λ‹€μŒκ³Ό 같이 OpenSSL을 μ‚¬μš©ν•˜μ—¬ ν•΄μ‹œλ₯Ό κ³„μ‚°ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€(λ§ˆμŠ€ν„° λ˜λŠ” /etc/kubernetes/pki/ca.crt 사본이 μžˆλŠ” λͺ¨λ“  κ³³μ—μ„œ μ‹€ν–‰).

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

λͺ¨λ“  22 λŒ“κΈ€

이와 같은 것에 +1.

이 아이디어에 λŒ€ν•œ λͺ‡ 가지 리프:

  • ν˜„μž¬ CA ν•΄μ‹œλ₯Ό 좜λ ₯ν•˜λŠ” μƒˆλ‘œμš΄ kubeadm ca-cert-hash λͺ…λ Ή(이름은 λ―Έμ •)μž…λ‹ˆλ‹€. 이것은 기본적으둜 kubeadm join λ¬Έμ„œ μ—μ„œ μ œκ³΅ν•˜λŠ” openssl λͺ…λ Ήκ³Ό λ™μΌν•©λ‹ˆλ‹€.
  • kubeadm init 와 λ§ˆμ°¬κ°€μ§€λ‘œ 전체 쑰인 λͺ…령을 좜λ ₯ν•˜λŠ” kubeadm token create λŒ€ν•œ --print-join-command ν”Œλž˜κ·Έλ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ ν”„λ‘œλΉ„μ €λ‹ 쀑에 kubeadm token create --print-join-command >> worker_init.sh 와 같은 ν•­λͺ©μ„ μ‹€ν–‰ν•˜μ—¬ μ‰½κ²Œ μžλ™ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • --print-join-command ν”Œλž˜κ·Έκ°€ μžˆλŠ” IDκ°€ 주어지면 전체 토큰을 κ°€μ Έμ˜€λŠ” μƒˆλ‘œμš΄ λͺ…λ Ή kubeadm token get <token id> 은 토큰 λŒ€μ‹  전체 κ²°ν•© λͺ…령을 μ„ νƒμ μœΌλ‘œ μΈμ‡„ν•©λ‹ˆλ‹€.

νƒœκ·Έν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. Docker Swarm의 UXμ—μ„œ λ©”λͺ¨ν•˜μ„Έμš”. μ–Έμ œλ“ μ§€ docker swarm join-token worker λ₯Ό μž…λ ₯ν•˜κ³  μž‘μ—…μžμ— λΆ™μ—¬λ„£κ±°λ‚˜ SSHλ₯Ό 톡해 μ „μ†‘ν•˜λŠ” λͺ…령을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Kubeadm을 μ‚¬μš©ν•˜λ©΄ μƒˆ λ…Έλ“œλ₯Ό μΆ”κ°€ν•˜κΈ° μœ„ν•΄ 말 κ·ΈλŒ€λ‘œ ν΄λŸ¬μŠ€ν„°λ₯Ό λΆ„ν•΄ν•˜λŠ” 것이 λ„ˆλ¬΄ μ–΄λ ΅μŠ΅λ‹ˆλ‹€. CLI에 λŒ€ν•΄ 맀우 μžμ‹ μ΄ μžˆμœΌλ―€λ‘œ μ €λ§Œ 그런 것이 μ•„λ‹ˆλΌκ³  ν™•μ‹ ν•©λ‹ˆλ‹€.

λ˜ν•œ init 좜λ ₯이 λ„ˆλ¬΄ λ¬΄κ±°μ›Œμ„œ μ‹€μ œλ‘œ 쑰인 λͺ…령을 가져와 μ–΄λ”˜κ°€μ— 숨길 수 μ—†μŠ΅λ‹ˆλ‹€... ν˜„μž¬ μ €λŠ” kubeadm init ... | grep 'kubeadm join --token' > /some_file μ˜μ‘΄ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
stdout의 μœ μΌν•œ 것이 join λͺ…령인 μžλ™ λͺ¨λ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

μ–΄μ¨Œλ“ , μ§€κΈˆ κ·Έ ca-cert-hashλ₯Ό μ–»λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? λ¬Όλ‘  kubeadm init 좜λ ₯은 이 μ‹œμ μ—μ„œ 사라진 지 μ˜€λž˜μž…λ‹ˆλ‹€... 그리고 λ‚˜μ€‘μ— μš”μ²­ μ‹œ ν•΄λ‹Ή 정보λ₯Ό μ‰½κ²Œ μΆ”μΆœν•  수 μžˆμ„ κ²ƒμœΌλ‘œ κΈ°λŒ€ν•˜κ³  μ €μž₯ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ 가진 토큰에 κ°€μž… 얻을 수 μžˆμ—ˆλ‹€ kubeadm token list 와 또 λ‹€λ₯Έ λ…Έλ“œμ— ν•©λ₯˜ kubeadm join --token ,ν•˜μ§€λ§Œ λ§ν•˜κ³ μžˆλ‹€ :

[validation] WARNING: using token-based discovery without DiscoveryTokenCACertHashes can be unsafe (see https://kubernetes.io/docs/admin/kubeadm/#kubeadm-join).
[validation] WARNING: Pass --discovery-token-unsafe-skip-ca-verification to disable this warning. This warning will become an error in Kubernetes 1.9.

λ”°λΌμ„œ 였λ₯˜κ°€ λ°œμƒν•˜κΈ° 전에 ν•΄λ‹Ή λ§€κ°œλ³€μˆ˜λ₯Ό μ–΄λ–»κ²Œ μ „λ‹¬ν•©λ‹ˆκΉŒ? 도움을 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

@zcalusic ν˜„μž¬ 방법은 λ‹€μŒκ³Ό 같이 OpenSSL을 μ‚¬μš©ν•˜μ—¬ ν•΄μ‹œλ₯Ό κ³„μ‚°ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€(λ§ˆμŠ€ν„° λ˜λŠ” /etc/kubernetes/pki/ca.crt 사본이 μžˆλŠ” λͺ¨λ“  κ³³μ—μ„œ μ‹€ν–‰).

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

힌트λ₯Ό μ£Όμ‹  @mattmoyer μ—κ²Œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. κ·€ν•˜μ˜ onelinerλŠ” μ™„λ²½ν•˜κ²Œ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.

λ¬Όλ‘  --print-join-command κ°€ 훨씬 더 λ‚˜μ€ μ‚¬μš©μž κ²½ν—˜μ΄ 될 κ²ƒμ΄λΌλŠ” 데 λ™μ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.

--print-join-command λ™μ˜

μš°λ¦¬λŠ” SIG νšŒμ˜μ—μ„œ https://github.com/kubernetes/kubernetes/pull/55468 _및_ 이 κΈ°λŠ₯ μΆ”κ°€λ₯Ό λͺ¨λ‘ 진행할 것이라고 κ²°λ‘ μ§€μ—ˆμŠ΅λ‹ˆλ‹€.
μš°λ¦¬λŠ” 쑰금 후에 μ •ν™•νžˆ μ–΄λ–€ ν˜•νƒœμΈμ§€ λ³Ό κ²ƒμž…λ‹ˆλ‹€

이것은 2017λ…„ 11μ›” 21일 쀌 μ½œμ—μ„œ λ…Όμ˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή 톡화 μ‹œκ°„μ€ https://docs.google.com/document/d/1deJYPIF4LmhGjDVaqrswErIrV7mtwJgovtLnPCDxP7U/edit#에 μžˆμŠ΅λ‹ˆλ‹€.

μ–΄μ œ 이것에 λŒ€ν•΄ κ°„λ‹¨νžˆ μ‚΄νŽ΄λ³΄μ•˜μ§€λ§Œ 아직 μž‘λ™ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. :)

kubeadm init와 λ§ˆμ°¬κ°€μ§€λ‘œ 전체 쑰인 λͺ…령을 좜λ ₯ν•˜λŠ” kubeadm 토큰 생성에 --print-join-command ν”Œλž˜κ·Έλ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ ν”„λ‘œλΉ„μ €λ‹ 쀑에 kubeadm token create --print-join-command >> worker_init.sh와 같은 것을 μ‹€ν–‰ν•˜μ—¬ μ‰½κ²Œ μžλ™ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이것을 μ„ ν˜Έν•œλ‹€λ©΄ bootstrap token create 에 이미 λ™μΌν•œ 논리가 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. μ—¬κΈ°μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μƒˆλ‘œμš΄ λͺ…λ Ή kubeadm 토큰 κ°€μ Έμ˜€κΈ°--print-join-command ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ IDκ°€ β€‹β€‹μ œκ³΅λœ 전체 토큰을 κ°€μ Έμ˜΅λ‹ˆλ‹€. μ„ νƒμ μœΌλ‘œ 토큰 λŒ€μ‹  전체 쑰인 λͺ…령을 μΈμ‡„ν•©λ‹ˆλ‹€.

μ €λŠ” 개인적으둜 이μͺ½μ„ μ„ ν˜Έν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 두 아이디어 λͺ¨λ‘ κ΅¬ν˜„ν•  λ•Œ 더 λ§Žμ€ μ»¨ν…μŠ€νŠΈκ°€ ν•„μš”ν•œ κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ apiserver κ΄‘κ³  μ£Όμ†Œλ₯Ό μ–»μœΌλ €λ©΄ MasterConfiguration이 ν•„μš”ν•©λ‹ˆλ‹€. ν˜„μž¬ token create μ—λŠ” ꡬ성이 μ—†μŠ΅λ‹ˆλ‹€.

μ—…λ°μ΄νŠΈ: 두 가지 아이디어λ₯Ό λͺ¨λ‘ κ΅¬ν˜„ν•  수 μžˆμ„κΉŒμš”? @luxas @mattmoyer

https://github.com/kubernetes/kubernetes/pull/56185 μ—μ„œ 첫 번째 아이디어λ₯Ό κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€ kubeadm get 아이디어λ₯Ό κ΅¬ν˜„ν•˜λŠ” 데도 λ°˜λŒ€ν•˜μ§€ μ•Šμ§€λ§Œ μ‹œκ°„μ΄ λΆ€μ‘±ν•©λ‹ˆλ‹€.

μƒˆλ‘œμš΄ kubeadm get λ₯Ό μƒμ„±ν•˜λŠ” λŒ€μ‹ , 이미 μ‘΄μž¬ν•˜λŠ” kubeadm token list 의 끝에 ν•΄μ‹œ/kubeadm 쑰인 문을 인쇄해야 ν•©λ‹ˆλ‹€.

kubeadm token list --print-join-command 이 쒋을 것 κ°™μ•„μš”!

λ‚˜λŠ” κ·Έ 아이디어λ₯Ό μ’‹μ•„ν•œλ‹€ @luxas. 덜 μž₯ν™©ν•˜κ²Œ λ§Œλ“€ 수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. docker CLI에 λΉ„ν•΄ 맀우 κΈ΄ ν”Œλž˜κ·Έ kubeadm λ₯Ό μž…λ ₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

kubeadm token list --verbose

kubeadm token list --tokens

kubeadm token list --join-token

kubeadm token list --verbose|-v μ €μ—κ²Œ νš¨κ³Όμ μž…λ‹ˆλ‹€.

이봐, 끝났어?
λ‚΄ ν΄λŸ¬μŠ€ν„°μ˜ μƒˆ λ…Έλ“œμ— κ°€μž…ν•˜κΈ° μœ„ν•œ 토큰을 μ–»μœΌλ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν•©λ‹ˆκΉŒ?

@tzurE λ³‘ν•©λ˜μ—ˆμ§€λ§Œ 아직 μΆœμ‹œλ˜μ§€ μ•Šμ•˜μœΌλ©° 이번 μ£Ό ν›„λ°˜μ— μΆœμ‹œλ  μ˜ˆμ •μΈ Kubernetes 1.9의 일뢀가 될 κ²ƒμž…λ‹ˆλ‹€.

μƒˆ κΈ°λŠ₯을 μ‚¬μš©ν•˜λ©΄ 이 λͺ…령을 μ‹€ν–‰ν•˜μ—¬ λ…Έλ“œλ₯Ό μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

# on a master node (or any node with admin access to your cluster)
$ kubeadm token create --print-join-command
kubeadm join --token 447067.20b55955bd6abe6c 192.168.99.100:8443 --discovery-token-ca-cert-hash sha256:17023a5c90b996e50c514e63e161e46f78be216fd48c0c3df3be67e008b28889
# on the new node (copy-pasted from the output above)
$ kubeadm join --token 447067.20b55955bd6abe6c 192.168.99.100:8443 --discovery-token-ca-cert-hash sha256:17023a5c90b996e50c514e63e161e46f78be216fd48c0c3df3be67e008b28889

μ’‹μ•„μš”, κ°μ‚¬ν•©λ‹ˆλ‹€.
κ·Έ λ™μ•ˆ 해결책이 μžˆμŠ΅λ‹ˆκΉŒ? 일반 λͺ…령을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  μΆ”μΆœν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

@tzurE 이 λŒ“κΈ€ 보기: https://github.com/kubernetes/kubeadm/issues/519#issuecomment -343192126

μ•ˆλ…•ν•˜μ„Έμš” @mattmoyer

"kubeadm token create --print-join-command" λͺ…령은 1.9μ—μ„œ 잘 μž‘λ™ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ λ‚΄ λ…Έλ“œμ—μ„œ NotReady μƒνƒœκ°€ λ‚˜νƒ€λ‚©λ‹ˆλ‹€. λ‚˜λŠ” k8s 1.9.0κ³Ό ν•¨κ»˜ μš°λΆ„νˆ¬ 16.04λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ–΄λ–€ μ œμ•ˆ?

@siddharthjoshi745 Weave Netκ³Ό 같은 Pod λ„€νŠΈμ›Œν¬λ₯Ό λ°°ν¬ν•©λ‹ˆλ‹€(우리 λ¬Έμ„œμ—μ„œ λ³Ό 수 있음).
였래된 λ¬Έμ œμ— λŒ€ν•΄ λŒ“κΈ€μ„ 달지 말고 문제λ₯Ό λ°œκ²¬ν•œ 경우 μƒˆ 문제λ₯Ό μ—΄κ±°λ‚˜ Slackμ—μ„œ 도움을 μš”μ²­ν•˜μ„Έμš”.
쒋은 ν•˜λ£¨ λ˜μ„Έμš”!

μ–΄λ–»κ²Œ ν•˜λ‚˜μ˜ κ°’λ§Œ 좜λ ₯ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? 토큰 λ˜λŠ” 발견 토큰 샀 등을 λ§ν•˜μ‹­μ‹œμ˜€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰