μ΄ λ¬Έμ λ₯Ό μ μΆνκΈ° μ μ Kubernetes λ¬Έμ μμ μ΄λ€ ν€μλλ₯Ό κ²μνμ ¨μ΅λκΉ? (μ€λ³΅ νλͺ©μ μ°Ύμ κ²½μ° λμ κ±°κΈ°μ νμ ν΄μΌ ν©λλ€.): kubeadm
μ΄κ²μ λ²κ·Έ λ³΄κ³ μμ λκΉ μλλ©΄ κΈ°λ₯ μμ²μ λκΉ? (νλ μ ν): λ²κ·Έ 보κ³
Kubernetes λ²μ ( kubectl version
): 1.6.0
νκ²½ :
uname -a
): 4.4.50-hypriotos-v7+λ¬΄μ¨ μΌμ΄ μμλμ§ :
kubeadm μμνκΈ° κ°μ΄λλ₯Ό μ νν λ°λ₯΄μμμ€ .
# kubeadm init --apiserver-cert-extra-sans redacted --pod-network-cidr 10.244.0.0/16
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[init] Using Kubernetes version: v1.6.0
[init] Using Authorization mode: RBAC
[preflight] Running pre-flight checks
[certificates] Generated CA certificate and key.
[certificates] Generated API server certificate and key.
[certificates] API Server serving cert is signed for DNS names [kube-01 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local redacted] and IPs [10.96.0.1 10.0.1.101]
[certificates] Generated API server kubelet client certificate and key.
[certificates] Generated service account token signing key and public key.
[certificates] Generated front-proxy CA certificate and key.
[certificates] Generated front-proxy client certificate and key.
[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[apiclient] Created API client, waiting for the control plane to become ready
[apiclient] All control plane components are healthy after 206.956919 seconds
[apiclient] Waiting for at least one node to register and become ready
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
"첫 λ²μ§Έ λ Έλκ° λ±λ‘λμμ§λ§ μμ§ μ€λΉλμ§ μμμ΅λλ€"λΌλ λ§μ§λ§ λ©μμ§κ° 무ν λ°λ³΅λκ³ kubeadmμ΄ μλ£λμ§ μμ΅λλ€. λͺ¨λ Docker 컨ν μ΄λκ° μμλλ‘ μ€ν μ€μ΄κ³ λ€μκ³Ό κ°μμ§ νμΈνκΈ° μν΄ λ€λ₯Έ μΈμ μμ λ§μ€ν° μλ²μ μ°κ²°νμ΅λλ€.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54733aa1aae3 gcr.io/google_containers/kube-controller-manager-arm<strong i="6">@sha256</strong>:22f30303212b276b6868b89c8e92c5fb2cb93641e59c312b254c6cb0fa111b2a "kube-controller-mana" 10 minutes ago Up 10 minutes k8s_kube-controller-manager_kube-controller-manager-kube-01_kube-system_d44abf63e3ab24853ab86643e0b96d81_0
55b6bf2cc09e gcr.io/google_containers/etcd-arm<strong i="7">@sha256</strong>:0ce1dcd85968a3242995dfc168abba2c3bc03d0e3955f52a0b1e79f90039dcf2 "etcd --listen-client" 11 minutes ago Up 11 minutes k8s_etcd_etcd-kube-01_kube-system_90ab26991bf9ad676a430c7592d08bee_0
bd0dc34d5e77 gcr.io/google_containers/kube-apiserver-arm<strong i="8">@sha256</strong>:c54b8c609a6633b5397173c763aba0656c6cb2601926cce5a5b4870d58ba67bd "kube-apiserver --ins" 12 minutes ago Up 12 minutes k8s_kube-apiserver_kube-apiserver-kube-01_kube-system_4d99c225ec157dc715c26b59313aeac8_1
1c4c7b69a3eb gcr.io/google_containers/kube-scheduler-arm<strong i="9">@sha256</strong>:827449ef1f3d8c0a54d842af9d6528217ccd2d36cc2b49815d746d41c7302050 "kube-scheduler --kub" 13 minutes ago Up 13 minutes k8s_kube-scheduler_kube-scheduler-kube-01_kube-system_3ef1979df7569495bb727d12ac1a7a6f_0
4fd0635f9439 gcr.io/google_containers/pause-arm:3.0 "/pause" 14 minutes ago Up 14 minutes k8s_POD_kube-controller-manager-kube-01_kube-system_d44abf63e3ab24853ab86643e0b96d81_0
cfb4a758ad96 gcr.io/google_containers/pause-arm:3.0 "/pause" 14 minutes ago Up 14 minutes k8s_POD_etcd-kube-01_kube-system_90ab26991bf9ad676a430c7592d08bee_0
a631d8b6c11c gcr.io/google_containers/pause-arm:3.0 "/pause" 14 minutes ago Up 14 minutes k8s_POD_kube-scheduler-kube-01_kube-system_3ef1979df7569495bb727d12ac1a7a6f_0
309b62fff122 gcr.io/google_containers/pause-arm:3.0 "/pause" 14 minutes ago Up 14 minutes k8s_POD_kube-apiserver-kube-01_kube-system_4d99c225ec157dc715c26b59313aeac8_0
admin kubeconfigλ₯Ό λ‘컬 λ¨Έμ μ 볡μ¬νκ³ kubectl(1.6.0)μ μ¬μ©νμ¬ kubeadmμ΄ λ±λ‘λμλ€κ³ μ£Όμ₯νλ λ Έλμμ λ¬΄μ¨ μΌμ΄ μΌμ΄λκ³ μλμ§ νμΈνμ΅λλ€.
$ kubectl describe node kube-01
Name: kube-01
Role:
Labels: beta.kubernetes.io/arch=arm
beta.kubernetes.io/os=linux
kubernetes.io/hostname=kube-01
Annotations: node.alpha.kubernetes.io/ttl=0
volumes.kubernetes.io/controller-managed-attach-detach=true
Taints: <none>
CreationTimestamp: Tue, 28 Mar 2017 22:06:40 -0700
Phase:
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
OutOfDisk False Tue, 28 Mar 2017 22:17:24 -0700 Tue, 28 Mar 2017 22:06:40 -0700 KubeletHasSufficientDisk kubelet has sufficient disk space available
MemoryPressure False Tue, 28 Mar 2017 22:17:24 -0700 Tue, 28 Mar 2017 22:06:40 -0700 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False Tue, 28 Mar 2017 22:17:24 -0700 Tue, 28 Mar 2017 22:06:40 -0700 KubeletHasNoDiskPressure kubelet has no disk pressure
Ready False Tue, 28 Mar 2017 22:17:24 -0700 Tue, 28 Mar 2017 22:06:40 -0700 KubeletNotReady runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
Addresses: 10.0.1.101,10.0.1.101,kube-01
Capacity:
cpu: 4
memory: 882632Ki
pods: 110
Allocatable:
cpu: 4
memory: 780232Ki
pods: 110
System Info:
Machine ID: 9989a26f06984d6dbadc01770f018e3b
System UUID: 9989a26f06984d6dbadc01770f018e3b
Boot ID: 7a77e2e8-dd62-4989-b9e7-0fb52747162a
Kernel Version: 4.4.50-hypriotos-v7+
OS Image: Raspbian GNU/Linux 8 (jessie)
Operating System: linux
Architecture: arm
Container Runtime Version: docker://1.12.6
Kubelet Version: v1.6.0
Kube-Proxy Version: v1.6.0
PodCIDR: 10.244.0.0/24
ExternalID: kube-01
Non-terminated Pods: (4 in total)
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits
--------- ---- ------------ ---------- --------------- -------------
kube-system etcd-kube-01 0 (0%) 0 (0%) 0 (0%) 0 (0%)
kube-system kube-apiserver-kube-01 250m (6%) 0 (0%) 0 (0%) 0 (0%)
kube-system kube-controller-manager-kube-01 200m (5%) 0 (0%) 0 (0%) 0 (0%)
kube-system kube-scheduler-kube-01 100m (2%) 0 (0%) 0 (0%) 0 (0%)
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
CPU Requests CPU Limits Memory Requests Memory Limits
------------ ---------- --------------- -------------
550m (13%) 0 (0%) 0 (0%) 0 (0%)
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
14m 14m 1 kubelet, kube-01 Normal Starting Starting kubelet.
14m 10m 55 kubelet, kube-01 Normal NodeHasSufficientDisk Node kube-01 status is now: NodeHasSufficientDisk
14m 10m 55 kubelet, kube-01 Normal NodeHasSufficientMemory Node kube-01 status is now: NodeHasSufficientMemory
14m 10m 55 kubelet, kube-01 Normal NodeHasNoDiskPressure Node kube-01 status is now: NodeHasNoDiskPressure
μ΄κ²μ kubeletμ΄ μ€λΉλμ§ μμ μ΄μ λ₯Ό λ°νλμ΅λλ€:
"λ°νμ λ€νΈμν¬κ° μ€λΉλμ§ μμ: NetworkReady=false μ΄μ :NetworkPluginNotReady λ©μμ§: docker : λ€νΈμν¬ νλ¬κ·ΈμΈμ΄ μ€λΉλμ§ μμ: cni config"
kubeadm 1.5λ₯Ό μ¬μ©ν μ€νμμ λ§μ€ν° λ
Έλλ₯Ό λΆλ¬μ€λ λ° CNIκ° νμνμ§ μμκΈ° λλ¬Έμ μ΄κ²μ λλΌμ΄ μΌμ
λλ€. μμ κ°μ΄λμμλ CNI νλ¬κ·ΈμΈ λ°°ν¬λ‘ μ΄λνκΈ° μ μ kubeadm init
κ° μ±κ³΅μ μΌλ‘ μλ£λμ΄μΌ νλ€κ³ μ μν©λλ€.
μ΄μ¨λ λ‘컬 μ»΄ν¨ν°μμ kubectlμ μ¬μ©νμ¬ νλλ¬μ λ°°ν¬νμ΅λλ€.
$ kubectl apply -f kube-flannel.yml
νμΌ λ΄μ©μ΄ μμλ μμΉ:
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: flannel
namespace: kube-system
---
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-flannel-cfg
namespace: kube-system
labels:
tier: node
app: flannel
data:
cni-conf.json: |
{
"name": "cbr0",
"type": "flannel",
"delegate": {
"isDefaultGateway": true
}
}
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: kube-flannel-ds
namespace: kube-system
labels:
tier: node
app: flannel
spec:
template:
metadata:
labels:
tier: node
app: flannel
spec:
hostNetwork: true
nodeSelector:
beta.kubernetes.io/arch: amd64
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
serviceAccountName: flannel
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.7.0-amd64
command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr" ]
securityContext:
privileged: true
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- name: run
mountPath: /run
- name: flannel-cfg
mountPath: /etc/kube-flannel/
- name: install-cni
image: quay.io/coreos/flannel:v0.7.0-amd64
command: [ "/bin/sh", "-c", "set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done" ]
volumeMounts:
- name: cni
mountPath: /etc/cni/net.d
- name: flannel-cfg
mountPath: /etc/kube-flannel/
volumes:
- name: run
hostPath:
path: /run
- name: cni
hostPath:
path: /etc/cni/net.d
- name: flannel-cfg
configMap:
name: kube-flannel-cfg
κ·Έλ¬λ κ·Έκ²μ κ²°μ½ μμ λμ§ μμμ΅λλ€:
$ kubectl describe ds kube-flannel-ds -n kube-system
Name: kube-flannel-ds
Selector: app=flannel,tier=node
Node-Selector: beta.kubernetes.io/arch=amd64
Labels: app=flannel
tier=node
Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"extensions/v1beta1","kind":"DaemonSet","metadata":{"annotations":{},"labels":{"app":"flannel","tier":"node"},"name":"kube-flannel-ds","n...
Desired Number of Nodes Scheduled: 0
Current Number of Nodes Scheduled: 0
Number of Nodes Scheduled with Up-to-date Pods: 0
Number of Nodes Scheduled with Available Pods: 0
Number of Nodes Misscheduled: 0
Pods Status: 0 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
Labels: app=flannel
tier=node
Service Account: flannel
Containers:
kube-flannel:
Image: quay.io/coreos/flannel:v0.7.0-amd64
Port:
Command:
/opt/bin/flanneld
--ip-masq
--kube-subnet-mgr
Environment:
POD_NAME: (v1:metadata.name)
POD_NAMESPACE: (v1:metadata.namespace)
Mounts:
/etc/kube-flannel/ from flannel-cfg (rw)
/run from run (rw)
install-cni:
Image: quay.io/coreos/flannel:v0.7.0-amd64
Port:
Command:
/bin/sh
-c
set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done
Environment: <none>
Mounts:
/etc/cni/net.d from cni (rw)
/etc/kube-flannel/ from flannel-cfg (rw)
Volumes:
run:
Type: HostPath (bare host directory volume)
Path: /run
cni:
Type: HostPath (bare host directory volume)
Path: /etc/cni/net.d
flannel-cfg:
Type: ConfigMap (a volume populated by a ConfigMap)
Name: kube-flannel-cfg
Optional: false
Events: <none>
μ΄λ»κ² λλμ§ λ³΄κΈ° μν΄ μ΄μ¨λ λ€λ₯Έ μλ² μ€ νλμ κ°μ
νλ €κ³ νμ΅λλ€. kubeadm token create
λ₯Ό μ¬μ©νμ¬ λ€λ₯Έ μ»΄ν¨ν°μμ μ¬μ©ν μ μλ ν ν°μ μλμΌλ‘ μμ±νμ΅λλ€. λ€λ₯Έ μ»΄ν¨ν°μμ:
kubeadm join --token $TOKEN 10.0.1.101:6443
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[preflight] Running pre-flight checks
[discovery] Trying to connect to API Server "10.0.1.101:6443"
[discovery] Created cluster-info discovery client, requesting info from "https://10.0.1.101:6443"
[discovery] Failed to request cluster info, will try again: [User "system:anonymous" cannot get configmaps in the namespace "kube-public". (get configmaps cluster-info)]
[discovery] Failed to request cluster info, will try again: [User "system:anonymous" cannot get configmaps in the namespace "kube-public". (get configmaps cluster-info)]
[discovery] Failed to request cluster info, will try again: [User "system:anonymous" cannot get configmaps in the namespace "kube-public". (get configmaps cluster-info)]
κ·Έλ¦¬κ³ λ§μ§λ§ λ©μμ§λ μμν λ°λ³΅λμμ΅λλ€.
μμνλ μΌ :
kubeadm init
λ μλ£λκ³ λΆνΈμ€νΈλ© ν ν°μ μμ±ν΄μΌ ν©λλ€.
Ubuntu 16.04.02, GCE λ° λ‘컬 VMWare μ€μΉ, Docker λ²μ 1.12.6, 컀λ 4.8.0-44-μΌλ° 47~16.04.1-Ubuntu SMPμμ λκ°μ μΌμ΄ λ°μν©λλ€.
kubelet λ‘κ·Έλ jimmycuadraμ λ³΄κ³ μμμ λ³Ό μ μλ μ€λ₯ μ μ λλ½λ /etc/cni/net.dμ λν κ²½κ³ λ₯Ό νμν©λλ€.
Mar 29 04:43:25 instance-1 kubelet[6800]: W0329 04:43:25.763117 6800 cni.go:157] Unable to update cni config: No networks found in /etc/cni/net.d
Mar 29 04:43:25 instance-1 kubelet[6800]: E0329 04:43:25.763515 6800 kubelet.go:2067] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
Ubuntu AWS VMμμλ λμΌν λ¬Έμ μ λλ€. λ컀 1.12.5
root@ip-10-43-0-20 :~# kubeadm λ²μ
kubeadm λ²μ : version.Info{μ£Ό:"1", λΆ:"6", GitVersion:"v1.6.0", GitCommit:"fff5156092b56e6bd60fff75aad4dc9de6b6ef37", GitTreeState::"clean", BuildDate:"2241 30Z", GoVersion:"go1.7.5"
root@ip-10-43-0-20 :~#
Linux ip-10-43-0-20 4.4.0-45-generic #66-Ubuntu SMP Wed Oct 19 14:12:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
root@ip-10-43-0-20 :~# kubeadm init --config cfg.yaml
[kubeadm] κ²½κ³ : kubeadmμ λ² ν λ²μ μ΄λ―λ‘ νλ‘λμ
ν΄λ¬μ€ν°μ μ¬μ©νμ§ λ§μμμ€.
[μ΄κΈ°ν] Kubernetes λ²μ μ¬μ©: v1.6.0
[μ΄κΈ°ν] κΆν λΆμ¬ λͺ¨λ μ¬μ©: RBAC
[μ΄κΈ°ν] κ²½κ³ : ν΄λΌμ°λ 곡κΈμ ν΅ν©μ΄ μλνλ €λ©΄ ν΄λ¬μ€ν°μ λͺ¨λ kubeletμ λν΄ --cloud-providerκ° μ€μ λμ΄μΌ ν©λλ€.
(/etc/systemd/system/kubelet.service.d/10-kubeadm.confλ μ΄λ₯Ό μν΄ νΈμ§λμ΄μΌ ν¨)
[μ€ν μ ] μ€ν μ κ²μ¬ μ€ν
[ν리νλΌμ΄νΈ] kubelet μλΉμ€ μμνκΈ°
[μΈμ¦μ] μμ±λ CA μΈμ¦μ λ° ν€μ
λλ€.
[μΈμ¦μ] μμ±λ API μλ² μΈμ¦μ λ° ν€μ
λλ€.
[μΈμ¦μ] API μλ² μλΉ μΈμ¦μλ DNS μ΄λ¦ [ip-10-43-0-20 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] λ° IP [10.96.0.1 10.43.0.20]μ λν΄ μλͺ
λμμ΅λλ€. ]
[μΈμ¦μ] API μλ² kubelet ν΄λΌμ΄μΈνΈ μΈμ¦μ λ° ν€λ₯Ό μμ±νμ΅λλ€.
[μΈμ¦μ] μμ±λ μλΉμ€ κ³μ ν ν° μλͺ
ν€ λ° κ³΅κ° ν€.
[μΈμ¦μ] νλ‘ νΈ νλ‘μ CA μΈμ¦μ λ° ν€λ₯Ό μμ±νμ΅λλ€.
[μΈμ¦μ] νλ‘ νΈ νλ‘μ ν΄λΌμ΄μΈνΈ μΈμ¦μ λ° ν€λ₯Ό μμ±νμ΅λλ€.
[μΈμ¦μ] μ ν¨ν μΈμ¦μ λ° ν€κ° μ΄μ "/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"
[apiclient] API ν΄λΌμ΄μΈνΈ μμ±, 컨νΈλ‘€ νλ μΈ μ€λΉ λκΈ°
[apiclient] λͺ¨λ μ μ΄ νλ©΄ κ΅¬μ± μμλ 16.531681μ΄ νμ μ μμ
λλ€.
[apiclient] νλ μ΄μμ λ
Έλκ° λ±λ‘λκ³ μ€λΉλ λκΉμ§ λκΈ° μ€
[apiclient] 첫 λ²μ§Έ λ
Έλκ° λ±λ‘λμμ§λ§ μμ§ μ€λΉλμ§ μμμ΅λλ€.
[apiclient] 첫 λ²μ§Έ λ
Έλκ° λ±λ‘λμμ§λ§ μμ§ μ€λΉλμ§ μμμ΅λλ€.
[apiclient] 첫 λ²μ§Έ λ
Έλκ° λ±λ‘λμμ§λ§ μμ§ μ€λΉλμ§ μμμ΅λλ€.
++ λμΌν λ¬Έμ (Ubuntu 16.04.1)
Ubuntu 16.04μμλ λ§μ°¬κ°μ§μ λλ€.
CentOS 7μμ kubeletμ 1.5.4
λ€μ΄κ·Έλ μ΄λνμ΅λλ€. κ·Έκ²μ λλ₯Ό μν΄ κ·Έκ²μ ν΄κ²°νμ΅λλ€. 1.6.0
kubeletμμ μ€λΉ νμΈμ΄ λ€λ₯΄κ² μλνλ κ² κ°μ΅λλ€.
k8s 1.6.0μΌλ‘ μ κ·Έλ μ΄λν μ΄ν λ² μ΄λ©ν x64 μμ€ν μ CentOS 7μμλ λμΌν λ¬Έμ
Ubuntu 16.04μμ λμΌν λ¬Έμ
Ubuntu 16.04μμ λμΌν λ¬Έμ λ‘ kubelet
ν¨ν€μ§λ₯Ό μλμΌλ‘ λ€μ΄κ·Έλ μ΄λνλ©΄ λ¬Έμ κ° ν΄κ²°λμμ΅λλ€.
# apt install kubelet=1.5.6-00
@ctrlaltdel κ·Έκ²μ λλ₯Ό μν΄ μλνμ§ μμμ΅λλ€.
λλ μ΄κ²μ΄ Kubelet λ¬Έμ λΌκ³ μκ°ν©λλ€. CNIκ° κ΅¬μ± ν΄μ λμ΄ μμ λ λ Έλλ₯Ό μ€λΉλμ§ μμ κ²μΌλ‘ νμν΄μλ μ λ©λλ€. CNIκ° νμν ν¬λλ§ μ€λΉλμ§ μμ κ²μΌλ‘ νμν΄μΌ ν©λλ€.
@jbeda μ΄ λ¬Έμ κ° μΈμ ν΄κ²°λλμ§ μμλκΉ?
@kristiandrucker -- μλ -- μ¬μ ν λ¬΄μ¨ μΌμ΄ μΌμ΄λκ³ μλμ§ νμ νκ³ μμ΅λλ€. μμΈμ λ¨Όμ νμ ν΄μΌ ν©λλ€.
@jbeda μκ² μ΅λλ€ . νμ§λ§ λ¬Έμ κ° ν΄κ²°λ νμλ μ΄λ»κ² λ κΉμ? μμ€μμ kubeletμ λ€μ λΉλνμκ² μ΅λκΉ?
@kristiandrucker μ΄κ²μ kubelet λ¬Έμ μΈ κ²½μ° k8sμ ν¬μΈνΈ 릴리μ€μμ λμμΌ ν©λλ€.
https://github.com/kubernetes/kubernetes/pull/43474 κ° κ·Όλ³Έ μμΈμ΄λΌκ³ μκ°ν©λλ€. λ²κ·Έλ₯Ό μ κ³ νκ³ λ€νΈμν¬ μ¬λλ€μκ² νμ μ‘°μΉλ₯Ό μ·¨νλ €κ³ ν©λλ€.
@dcbw μ£Όλ³μ μλμ?
λ¬Έμ λ DaemonSetμ΄ Net workReady:false μ‘°κ±΄μ΄ μλ λ Έλμ μμ½λμ§ μμ κ² stNetwork:trueμΈ ν¬λλ Net workReady:false μΈ λ Έλμμ μμ½ν΄μΌ νμ§λ§ ho stNetwork:false ν¬λλ μμ½νμ§ μμμΌ ν©λλ€.
ν΄κ²° λ°©λ²μΌλ‘ DaemonSetμ scheduler.alpha.kubernetes.io/critical-pod
μ£Όμμ μΆκ°νλ©΄ λ€μ μλν©λκΉ?
@janetkuo @lukaszo DS λμμ λΆλ₯ν μ μμ΅λκΉ?
#sig-network on slack, btwμμλ μ§νμ€μΈ ν λ‘ μ΄ μμ΅λλ€.
κ°μ λ¬Έμ CentOS 7 x64
@prapdm μ΄κ²μ μ€ν μ€μΈ λ°°ν¬νμ λν΄ λ¬΄λ°©λΉ μνμΈ κ²μΌλ‘ 보μ λλ€.
CentOS Linux λ¦΄λ¦¬μ€ 7.3.1611(μ½μ΄)
Ubuntu 16.04κ° μλ ν λ
Έλμμ μλνμ΅λλ€. "μμ§ μ€λΉλμ§ μμμ΅λλ€"λΌλ λ©μμ§μ ν¨κ» λ©μΆ₯λλ€. λν μλμΌλ‘ νλλ¬ DaemonSetμ μμ±νμ§λ§ μ κ²½μ°μλ λ¬Έμ μμ΄ νλμ ν¬λλ₯Ό μμ½νμ΅λλ€. λ°λͺ¬ ν¬λ μμ²΄κ° E0329 22:57:03.065651 1 main.go:127] Failed to create SubnetManager: error retrieving pod spec for 'kube-system/kube-flannel-ds-z3xgn': the server does not allow access to the requested resource (get pods kube-flannel-ds-z3xgn)
μ€λ₯μ ν¨κ» CrashLoopBackOffμ λ€μ΄κ°μ΅λλ€.
Centosμμλ μλν κ²μ΄μ§λ§ DaemonSetμ΄ μ¬κΈ°μμ μ± μμ΄ μλ€κ³ μκ°νμ§ μμ΅λλ€. kubeadmμ΄ μ¬κΈ°μμ μ€λ¨λ©λλ€.
κ·Έκ²μ rbac κΆν μ€λ₯μ λλ€.
@jimmycuadra μ νλ‘μΈμκ° μλ λΌμ¦λ² 리 νμ΄μμ μ€ννκ³ μλ€λ μ¬μ€μ λ°©κΈ μμμ΅λλ€.
flannel λ°λͺ¬ μΈνΈμ κ²½μ° λ€μμ΄ μμ΅λλ€.
``` λ
Έλ μ νκΈ°:
beta.kubernetes.io/arch: amd64
but your node is labeled with:
beta.kubernetes.io/arch=arm
```
λ°λΌμ DaemonSetμ μ΄ λ
Έλμμ ν¬λλ₯Ό μ μ¬ν μ μμΌλ©° λ
Έλ μ νκΈ°λ₯Ό λ³κ²½νκΈ°λ§ νλ©΄ μλν©λλ€.
μ¬μ ν rbac κΆνμΌλ‘ μ€λ₯κ° λ°μνμ§λ§ λ΄κ° λͺ¨λ₯΄κΈ° λλ¬Έμ @mikedanese κ° μμ λ°©λ²μ μλ €μ€ κ²μ
λλ€.
μ, κ°μ¬ν©λλ€ @lukaszo! μ΄λ²μλ RPi κ΄λ ¨ κ°μ΄λ(k8s 1.5μ μ¬μ©)λ₯Ό λ°λ₯΄μ§ μμκ³ κ·Έ λ¨κ³λ₯Ό μμ΄λ²λ Έμ΅λλ€. λ°λͺ¬ μΈνΈμ μ€λ₯κ° λ°μνμ λ κ·Έκ²μ λ°κ²¬νμ κ²μ λλ€. :}
μ¬κΈ°μ μ€λͺ
λ μ§μΉ¨μ λ°λ₯Ό λλ μ΄ λ¬Έμ κ° λ°μν©λλ€.
https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/
μ¬λ°λ₯Έ νλλ¬ λ€νΈμν¬ ν¬λλ₯Ό μ€μΉν ν μλνλλ‘ κ΄λ¦¬νμ΅λλ€.
@jimmycuadra κ° @lukaszo λκΈκ³Ό ν¨κ» μλ νλλ‘ ν μ μλ€κ³ μκ°ν©λλ€.
[apiclient] First node has registered, but is not ready yet
λ©μμ§κ° νλ¬λ©μ μμνλ©΄ kubernetes API μλ²κ° μ€νλλ―λ‘ λ€μμ μνν μ μμ΅λλ€.
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | kubectl create -f -
λΌμ¦λ² 리 νμ΄ μ€μΉμ κ²½μ°:
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -
κ·Έλ¬λ©΄ μλ£λ©λλ€.
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node is ready after 245.050597 seconds
[apiclient] Test deployment succeeded
[token] Using token: 4dc99e............
[apiconfig] Created RBAC rules
[addons] Created essential addon: kube-proxy
[addons] Created essential addon: kube-dns
Your Kubernetes master has initialized successfully!
To start using your cluster, you need to run (as a regular user):
sudo cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
export KUBECONFIG=$HOME/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
http://kubernetes.io/docs/admin/addons/
You can now join any number of machines by running the following on each node
as root:
kubeadm join --token 4dc99e........... 192.168.1.200:6443
λλ κ°μ λ¬Έμ κ° μμκ³ λ€μκ³Ό κ°μ΄ μμ νμ΅λλ€.
λΉμ μ λ£¨νΈ μ¬μΌν©λλ€
kubeadm 1.6.0μμλ μμ€ν νμΌμμ $KUBELET_NETWORK_ARGS νκ²½ λ³μλ₯Ό μ κ±°ν΄μΌ ν©λλ€. /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
κ·Έλ° λ€μ μ λ§λ₯Ό λ€μ μμνμμμ€.
systemctl daemon-reload
kubeadm init
μ‘°κΈ μκ°μ΄ 걸립λλ€ ... μ±κ³΅ ν
μ¬μ©νλ €λ λ€νΈμν¬ μ λμ¨ λ€μ΄λ‘λ: http://kubernetes.io/docs/admin/addons/
μ₯μλͺ©μ΄ κ°μ₯ μ’μ κ² κ°μ΅λλ€. νμ€νμ§λ μμ§λ§ μμ§ ν μ€νΈ μ€μ λλ€.
@thelastworm
λ°©κΈ νλ €κ³ νλλ° μλνμ§ μμμ΅λλ€.
μ°λΆν¬ 16.04.2 LTS, kubeadm 1.6.0
λ€μ λ¨κ³λ₯Ό μννμ΅λλ€.
kubeadm reset
μμνλ €λ μ΄μ μλλ₯Ό μ 리ν©λλ€.kubeadm init --token=<VALUE> --apiserver-advertise-address=<IP>
[νΈμ§λ¨]
@srinat999 κ° systemctl daemon-reload
μ μ kubeadm init
systemctl daemon-reload
λ₯Ό μ€νν΄μΌ νλ€κ³ μ§μ ν ν μλνμ΅λλ€.
@jcorral μ μ루μ
μ μμ νμ§ μμ API ν¬νΈκ° λ μ΄μ kubeadm
μν΄ μμ±λμ§ μκΈ° λλ¬Έμ νλλ¬ λ°°ν¬μ λν ν λ²μ λ³κ²½μΌλ‘ μ μκ² ν¨κ³Όμ μ΄μμ΅λλ€ .
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | \
kubectl --kubeconfig /etc/kubernetes/admin.conf create -f -
@MaximF conf νμΌμ λ³κ²½ν ν systemctl daemon-reload
λ₯Ό ν΄μ€μΌ ν©λλ€. λλ₯Ό μν΄ μΌνλ€.
@jcorral κ·νμ μ루μ μ΄ μ μκ² ν¨κ³Όμ μ λλ€. κ°μ¬ ν΄μ.
@MaximF λ κ·Έλ₯ λ€μ μμ μ λ§ λͺ λ Ήμ€μ μΆκ°ν©λλ€
kubeadm initκ° μ±κ³΅μ μΌλ‘ μλ£λμ§λ§ λ²μ μ νμΈν λ λ€μ μ€λ₯κ° λ°μν©λλ€.
ν΄λΌμ΄μΈνΈ λ²μ : version.Info{μ£Ό:"1", λΆ:"6", GitVersion:"v1.6.0", GitCommit:"fff5156092b56e6bd60fff75aad4dc9de6b6ef37", GitTreeState:"clean", BuildDate:"2017-163 33Z", GoVersion:"go1.7.5", μ»΄νμΌλ¬:"gc", νλ«νΌ:"linux/amd64"}
μλ² localhost:8080 μ λν μ°κ²°μ΄ κ±°λΆλμμ΅λλ€. μ¬λ°λ₯Έ νΈμ€νΈ λλ ν¬νΈλ₯Ό μ§μ νμ΅λκΉ?
@ν리볼
KUBECONFIG νκ²½ λ³μλ₯Ό μ€μ ν΄μΌ ν©λλ€.
CNIμ κ΄λ ¨λ ν΄κ²° λ°©λ²μ μ€νν ν Flannelμ μ€νν μ¬λμ΄ μμ΅λκΉ? μ€λΉλμ§ μμ λ¬Έμ λ₯Ό μ λ¬ν μ μμ§λ§ Flannelμ μ€ννλ©΄ λ€μκ³Ό κ°μ μ€λ₯κ° λ°μν©λλ€.
Failed to create SubnetManager: error retrieving pod spec for 'kube-system/kube-flannel-ds-g5cbj': the server does not allow access to the requested resource (get pods kube-flannel-ds-g5cbj)
Pod μνμ "CrashLoopBackOff"κ° νμλ¨
flannelμ΄ APIμμ μ½μ μ μλλ‘ κΆνμ λΆμ¬νλ €λ©΄ rbac μν μ μΆκ°ν΄μΌ ν©λλ€.
flannelμ΄ APIμμ μ½μ μ μλλ‘ κΆνμ λΆμ¬νλ €λ©΄ rbac μν μ μΆκ°ν΄μΌ ν©λλ€.
λ€λ₯Έ μ¬λμ΄ μ΄κ²μ΄ μλ―Ένλ λ°κ° κΆκΈνλ€λ©΄ flannelμ λ§λ€κΈ° μ μ kube-flannel-rbac.yml
λ₯Ό λ§λ€μ΄μΌ νλ κ² κ°μ΅λλ€.
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
λ£¨νΈ λ¬Έμ κ° ν΄κ²°λκ³ κ΄λ ¨ ν°μΌμ΄ λ«ν μκΈ° λλ¬Έμ μ΄
μ 보μ©: Ubuntu 16.04μμ μ λ°μ΄νΈλ ν¨ν€μ§λ‘ νμ¬ μλνκ³ μμ΅λλ€.
1.6.1μ΄ μ μκ² ν¨κ³Όμ μ λλ€! μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ° λμμ μ£Όμ λͺ¨λ λΆλ€κ» κ°μ¬λ립λλ€!
λ€μ λ¨κ³λ₯Ό μννμ¬ centos-release-7-3.1611.el7.centos.x86_64μ Kubernetes ν΄λ¬μ€ν°λ₯Ό μ±κ³΅μ μΌλ‘ μ€μ νμ΅λλ€(Dockerκ° μ΄λ―Έ μ€μΉλμ΄ μλ€κ³ κ°μ ).
1) (/etc/yum.repo.d/kubernetes.repoμμ) baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64-unstable
=> μ΅μ Kubernetes 1.6.1μμ λΆμμ ν μ μ₯μλ₯Ό μ¬μ©νλ €λ©΄
2) yum μ€μΉ -y kubelet kubeadm kubectl kubernetes-cni
3) (/etc/systemd/system/kubelet.service.d/10-kubeadm.conf) λ§μ§λ§ μ€ λμ "--cgroup-driver=systemd"λ₯Ό μΆκ°ν©λλ€.
=> Dockerλ cgroup-driverμ systemdλ₯Ό μ¬μ©νκ³ kubeletμ cgroup-driverμ cgroupfsλ₯Ό μ¬μ©νκΈ° λλ¬Έμ
λλ€.
4) systemctlμ kubeletμ νμ±ννκ³ && systemctlμ kubeletμ μμν©λλ€.
5) kubeadm μ΄κΈ°ν --pod-network-cidr 10.244.0.0/16
=> --api-advertise-addressesλ₯Ό μΆκ°νλ€λ©΄ λμ --apiserver-advertise-addressλ₯Ό μ¬μ©ν΄μΌ ν©λλ€.
6) cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
λ΄λ³΄λ΄κΈ° KUBECONFIG=$HOME/admin.conf
=> μ΄ λ¨κ³κ° μμΌλ©΄ kubectl getμμ μ€λ₯κ° λ°μν μ μμ΅λλ€.
=> 1.5.2μμλ νμ§ μμμ΅λλ€.
7) kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
=> 1.6.0μ μν κΈ°λ° μ‘μΈμ€ μ μ΄λ₯Ό λμ
νλ―λ‘ Flannel λ°λͺ¬μ
μ μμ±νκΈ° μ μ ClusterRole λ° ClusterRoleBindingμ μΆκ°ν΄μΌ ν©λλ€.
8) kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
=> Flannel λ°λͺ¬μ
μμ±
9) (λͺ¨λ μ¬λ μ΄λΈ λ
Έλμμ) kubeadm join --token (κ·νμ ν ν°) (ip):(port)
=> kubeadm initμ κ²°κ³Όμ κ°μ΄
μμ λͺ¨λ λ¨κ³λ Kubernetes-1.6.0, νΉν kubeadmκ³Ό κ΄λ ¨λ λ€μν λ¬Έμ μ μ μμ κ²°ν©ν κ²°κ³Όμ λλ€.
μκ°μ μ μ½ν μ μκΈ°λ₯Ό λ°λλλ€.
@eastcirclek @Sliim λλ¨ νμλλ€
@eastcirclek μ΄κ²μ μ¬λ¬ ν¬λΌμλ 쿼리νμ¬ λ°©κΈ μ€νν μ νν λ¨κ³μ λλ€. μκ°λ μ°¨μ΄κ° μλκΉμ? λͺ¨λ κ°μ¬ν©λλ€. μ΄ μ£Όμ λ μ λ§ λμμ΄ λμμ΅λλ€.
AWSμ Ubuntu 16.04 μλ²κ° μκ³ λ¨κ³λ₯Ό λ°λμ΅λλ€.
λΆλͺ
ν μ¬λ°λ₯΄κ² μλνμ§λ§ Calicoλ₯Ό λ€νΈμν¬ νλ¬κ·ΈμΈμΌλ‘ μ€μΉνλ €κ³ νλ©΄ λ€μ μ€λ₯κ° λ°μν©λλ€.
μλ² localhost:8080 μ λν μ°κ²°μ΄ κ±°λΆλμμ΅λλ€. μ¬λ°λ₯Έ νΈμ€νΈ λλ ν¬νΈλ₯Ό μ§μ νμ΅λκΉ?
k8s νμ΄ ν¨μΉ μμ μ νκ³ μμ΅λκΉ?
κ°μ¬ ν΄μ
@overip μ λ ν¨μΉκ° νμνμ§ μλ€κ³ μκ°ν©λλ€... kubectlμ μ¬μ©ν λ μ¬λ°λ₯Έ kubeconfig νμΌμ μ§μ νκΈ°λ§ νλ©΄ λ©λλ€. kubeadmμ /etc/kubernetes/admin.conf
μμ±νμ΄μΌ ν©λλ€.
@jimmycuadra κ·Έ λ¨κ³λ₯Ό μ€λͺ ν΄ μ£Όμκ² μ΅λκΉ?
@overip kubeadm init
μ μΆλ ₯μλ λ€μ μ§μΉ¨μ΄ μμ΅λλ€.
To start using your cluster, you need to run (as a regular user):
sudo cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
export KUBECONFIG=$HOME/admin.conf
κ°μΈμ μΌλ‘ μ λ νμΌμ $HOME/.kube/config
μ 볡μ¬νλ κ²μ μ νΈν©λλ€. μ΄ μμΉμμ kubectlμ΄ κΈ°λ³Έμ μΌλ‘ νμΌμ μ°Ύμ΅λλ€. κ·Έλ¬λ©΄ KUBECONFIG νκ²½ λ³μλ₯Ό μ€μ ν νμκ° μμ΅λλ€.
λ‘컬 μ»΄ν¨ν°μμ kubectlμ μ¬μ©ν κ³νμ΄λΌλ©΄ scp
(λλ λ΄μ©μ 볡μ¬νμ¬ λΆμ¬λ£κΈ°λ§ ν΄λ) μμ μ μ»΄ν¨ν°μμ ~/.kube/config
μ μΈ μ μμ΅λλ€.
μμΈν λ΄μ©μ μ΄ GitHub λ¬Έμ μμ "admin.conf"λ₯Ό κ²μνμΈμ. λͺ λ²μ΄λ μΈκΈλμμ΅λλ€.
@eastcirclek - λ¨κ³λ₯Ό λ°λμ§λ§ μ΄λ€ μ΄μ λ‘ λ
Έλκ° νλλ¬μ μ λλ‘ μ€μΉν μ μμ΅λλ€.
(μ°Έκ³ : λ§μ€ν°μμλ λͺ¨λ κ²μ΄ λΆλλ½μ΅λλ€.)
Apr 13 22:31:11 node2 kubelet[22893]: I0413 22:31:11.666206 22893 kuberuntime_manager.go:458] Container {Name:install-cni Image:quay.io/coreos/flannel:v0.7.0-amd64 Command:[/bin/sh -c set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done] Args:[] WorkingDir: Ports:[] EnvFrom:[] Env:[] Resources:{Limits:map[] Requests:map[]} VolumeMounts:[{Name:cni ReadOnly:false MountPath:/etc/cni/net.d SubPath:} {Name:flannel-cfg ReadOnly:false MountPath:/etc/kube-flannel/ SubPath:} {Name:flannel-token-g65nf ReadOnly:true MountPath:/var/run/secrets/kubernetes.io/serviceaccount SubPath:}] LivenessProbe:nil ReadinessProbe:nil Lifecycle:nil TerminationMessagePath:/dev/termination-log TerminationMessagePolicy:File ImagePullPolicy:IfNotPresent SecurityContext:nil Stdin:false StdinOnce:false TTY:false} is dead, but RestartPolicy says that we should restart it.
Apr 13 22:31:11 node2 kubelet[22893]: I0413 22:31:11.666280 22893 kuberuntime_manager.go:742] checking backoff for container "install-cni" in pod "kube-flannel-ds-3smf7_kube-system(2e6ad0f9-207f-11e7-8f34-0050569120ff)"
Apr 13 22:31:12 node2 kubelet[22893]: I0413 22:31:12.846325 22893 operation_generator.go:597] MountVolume.SetUp succeeded for volume "kubernetes.io/configmap/2e6ad0f9-207f-11e7-8f34-0050569120ff-flannel-cfg" (spec.Name: "flannel-cfg") pod "2e6ad0f9-207f-11e7-8f34-0050569120ff" (UID: "2e6ad0f9-207f-11e7-8f34-0050569120ff").
Apr 13 22:31:12 node2 kubelet[22893]: I0413 22:31:12.846373 22893 operation_generator.go:597] MountVolume.SetUp succeeded for volume "kubernetes.io/secret/2e6ad0f9-207f-11e7-8f34-0050569120ff-flannel-token-g65nf" (spec.Name: "flannel-token-g65nf") pod "2e6ad0f9-207f-11e7-8f34-0050569120ff" (UID: "2e6ad0f9-207f-11e7-8f34-0050569120ff").
λ΄ ν΄κ²° λ°©λ²μ 곡μ νμμμ€. λ¨Όμ $KUBELET_NETWORK_ARGSκ° νμν©λλ€. κ·Έλ μ§ μμΌλ©΄ CNIκ° νμ±ν/ꡬμ±λμ§ μμ΅λλ€. $KUBELET_NETWORK_ARGS μ κ±° λ° λ³΅μμ΄ λ무 볡μ‘ν΄ λ³΄μ
λλ€.
kubeadm initμ "[apiclient] 첫 λ²μ§Έ λ
Έλκ° λ±λ‘λμμ§λ§ μμ§ μ€λΉλμ§ μμμ΅λλ€"κ° νμλλ©΄ k8s ν΄λ¬μ€ν°κ° μ€μ λ‘ μμ²μ μ²λ¦¬ν μ€λΉκ° λ κ²μ
λλ€. μ΄λ μ¬μ©μλ λ€μκ³Ό κ°μ΄ https://kubernetes.io/docs/getting-started-guides/kubeadm/μ 3/4λ¨κ³λ‘ μ΄λνλ©΄ λ©λλ€.
To start using your cluster, you need to run (as a regular user):
sudo cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
export KUBECONFIG=$HOME/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: http://kubernetes.io/docs/admin/addons/
μ¬μ©μκ° ν¬λ λ€νΈμν¬λ₯Ό μ€μΉν λ ν¬λ λ€νΈμν¬ μ μ± μ μλΉμ€ κ³μ μ μΆ©λΆν κΆνμ΄ λΆμ¬λμλμ§ νμΈνμμμ€. νλλ¬μ μλ‘ λ€μ΄λ³΄κ² μ΅λλ€. λ€μκ³Ό κ°μ΄ flannelμ μλΉμ€ κ³μ μ ν΄λ¬μ€ν° κ΄λ¦¬μ μν μ λ°μΈλ©ν©λλ€. μ΄μμ μ΄μ§ μμ μ μμΌλ©° νλλ¬ μλΉμ€ κ³μ μ λν νΉμ μν μ μ μν μ μμ΅λλ€. BTW, μ¬μ©μκ° λμ보λμ κ°μ λ€λ₯Έ μ λμ¨ μλΉμ€λ₯Ό λ°°ν¬ν λ κ΄λ ¨ μλΉμ€ κ³μ μ μΆ©λΆν κΆνλ λΆμ¬ν΄μΌ ν©λλ€.
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: flannel:daemonset
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: flannel
namespace: kube-system
Podnetwork μλ²κ° μ€λΉλλ©΄ kubeadm initλ λ Έλκ° μ€λΉλμμμ νμνκ³ μ¬μ©μλ μ§μλ₯Ό κ³μν μ μμ΅λλ€.
νλλ¬μ μλ‘ λ€μ΄λ³΄κ² μ΅λλ€. λ€μκ³Ό κ°μ΄ flannelμ μλΉμ€ κ³μ μ ν΄λ¬μ€ν° κ΄λ¦¬μ μν μ λ°μΈλ©ν©λλ€. μ΄μμ μ΄μ§ μμ μ μμΌλ©° νλλ¬ μλΉμ€ κ³μ μ λν νΉμ μν μ μ μν μ μμ΅λλ€.
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.ymlμ΄ μ΄λ―Έ μμ΅λλ€.
λμμ μ£Όμ
μ κ°μ¬ν©λλ€.
λ§μ§λ§μΌλ‘ νλλ¬μ΄ μλ k8s 1.6.1μ΄ μμ ν μλν©λλ€. μ΄μ λͺ¨λ κ²μ΄ κ°λ₯ν νλ μ΄λΆμ μμ΅λλ€.
Centos/RHELμμ ν
μ€νΈλμμ΅λλ€. Debian κΈ°λ°(μ: Ubuntu)μ λν μ€λΉλ μμλμμ§λ§ μ½κ°μ κ°μ μ΄ νμν μ μμ΅λλ€.
https://github.com/ReSearchITEng/kubeadm-playbook/blob/master/README.md
μΆμ : sjenning/kubeadm-playbook κΈ°λ° μμ - @sjenningμ κ°μ¬
ν΄λ¬μ€ν°μ κ°μ
νκΈ° μν΄ λ€μμ μ»μ΅λλ€.
[discovery] " https://10.100.2.158 :6443"μμ μ 보λ₯Ό μμ²νλ ν΄λ¬μ€ν° μ 보 κ²μ ν΄λΌμ΄μΈνΈ μμ±
[κ²μ] ν΄λ¬μ€ν° μ 보λ₯Ό μμ²νμ§ λͺ»νμ΅λλ€. λ€μ μλν©λλ€. [configmaps "cluster-info"λ κΈμ§λ¨: μ¬μ©μ " system:anonymous "λ "kube-public" λ€μμ€νμ΄μ€μμ configmapμ κ°μ Έμ¬ μ μμ΅λλ€.]
[κ²μ] ν΄λ¬μ€ν° μ 보λ₯Ό μμ²νμ§ λͺ»νμ΅λλ€. λ€μ μλν©λλ€. [configmaps "cluster-info"λ κΈμ§λ¨: μ¬μ©μ " system:anonymous "λ "kube-public" λ€μμ€νμ΄μ€μμ configmapμ κ°μ Έμ¬ μ μμ΅λλ€.]
λ Έλλ₯Ό SelfHostingμΌλ‘ μμνμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
λ€λ₯Έ μ¬λμ΄ μ΄κ²μ΄ μλ―Ένλ λ°κ° κΆκΈνλ€λ©΄ flannelμ λ§λ€κΈ° μ μ
kube-flannel-rbac.yml
λ₯Ό λ§λ€μ΄μΌ νλ κ² κ°μ΅λλ€.