본문 바로가기

엔지니어

Kubernetes : Kubeadm : Master 노드 설정

Kubeadm를 설치하여 멀티 노드 Kubernetes 클러스터를 구성합니다.
이 예에서는 다음과 같이 3 개의 호스트를 사용하여 설정합니다.
전제 조건으로 각 노드의 Hostname, MAC address, Product_uuid은 고유해야합니다.
MAC address와 Product_uuid는 일반적으로 물리적 시스템과 일반적인 방법으로 만든 가상 머신이면 이미 고유되어있을 것입니다. Product_uuid은 [dmidecode -s system-uuid 명령으로 확인할 수 있습니다.
-----------+---------------------------+--------------------------+------------
| | |
eth0 | 10.0.0.30 eth0 | 10.0.0.51 eth0 | 10.0.0.52
+----------+-----------+ +-----------+----------+ +-----------+----------+
| [ dlp.srv.world ] | | [ node01.srv.world ] | | [ node02.srv.world ] |
| 마스터 노드 | | 작업자 노드 | | 작업자 노드 |
+----------------------+ +----------------------+ +----------------------+

Master 노드의 설정을 실시합니다.
[1]사전에 Kubeadm 설치 등 노드 일반적인 설정을 적용 해 둡니다 .
[2]Master 노드에서 초기 설치합니다.
[apiserver-advertise-address]는 Kubernetes API 서버가 수신하는 IP 주소를 지정합니다.
지정하지 않으면 기본 게이트웨이로 설정하고있는 네트워크와 동일한 네트워크에 속한 네트워크 인터페이스의 IP 주소가 설정됩니다. 네트워크 인터페이스를 두 개 이상 가지고 있으며 또한 기본 게이트웨이의 네트워크와는 다른 IP 주소에서 수신하려면 지정합니다. 그렇지 않은 경우는 [apiserver-advertise-address] 없이도 OK입니다.
[--pod-network-cidr]에는 Pod Network를 이용하는 네트워크를 지정합니다.
Pod Network를 구성하는 플러그인은 일부 소프트웨어에서 선택 가능합니다. (자세한 내용은 아래 링크 참조)
https://kubernetes.io/docs/concepts/cluster-administration/networking/
이 예에서는 Flannel에서 진행합니다. Flannel의 경우 - pod-network-cidr = 10.244.0.0 / 16]이어야합니다.
[root @ dlp ~] # kubeadm init --apiserver-advertise-address = 10.0.0.30 --pod-network-cidr = 10.244.0.0 / 16
[init] Kubernetes 버전 사용 : v1.10.0
[init] 권한 부여 모드 사용 : [Node RBAC]
[preflight] 비행 전 검사 실행.
[경고 방화벽] : 방화벽이 활성화되었습니다. 포트 [6443 10250]이 열려 있거나 클러스터가 올바르게 작동하지 않을 수 있는지 확인하십시오
[프리 플라이트] kubelet 서비스 시작
[인증서] ca 인증서 및 키가 생성되었습니다.
[인증서] 생성 된 apiserver 인증서 및 키.
[인증서] 인증서를 제공하는 apiserver는 DNS 이름으로 서명됩니다 [dlp.srv.world kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] 및 IP [10.96.0.1 10.0.0.30]
.....
.....
[bootstraptoken] csrapprover 컨트롤러가 노드 부트 스트랩 토큰에서 CSR을 자동으로 승인 할 수 있도록 구성된 RBAC 규칙
[bootstraptoken] 클러스터의 모든 노드 클라이언트 인증서에 대한 인증서 교체를 허용하도록 RBAC 규칙을 구성했습니다.
[bootstraptoken] "kube-public"네임 스페이스에서 "cluster-info"ConfigMap 작성
[애드온] 적용된 필수 애드온 : kube-dns
[애드온] 적용된 필수 애드온 : kube-proxy

Kubernetes 마스터가 초기화되었습니다!

클러스터 사용을 시작하려면 일반 사용자로 다음을 실행해야합니다.

mkdir -p $ HOME / .kube
sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
sudo chown $ (id -u) : $ (id -g) $ HOME / .kube / config

이제 포드 네트워크를 클러스터에 배포해야합니다.
다음에 나열된 옵션 중 하나를 사용하여 "kubectl apply -f [podnetwork] .yaml"을 실행하십시오.
https://kubernetes.io/docs/concepts/cluster-administration/addons/

각 노드에서 다음을 실행하여 여러 머신에 가입 할 수 있습니다.
루트로 :

다음 명령은 Worker 노드에서 클러스터 Join시 실행하기 위해 기록해 두는

kubeadm join 10.0.0.30:6443 --token ivcdtn.r9qt329oe49nb3b7 --discovery-token-ca-cert-hash sha256 : 2a2bdff5648e6f17bbc60889e8b47656795f2cb2ea959c8dc10b5dcb09d48be5

클러스터 관리 사용자 설정

일반 사용자 관리 사용자로하는 경우, 해당 사용자가 직접 sudo cp / chown ~하는

[root @ dlp ~] # mkdir -p $ HOME / .kube
[root @ dlp ~] # cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
[root @ dlp ~] # chown $ (id -u) : $ (id -g) $ HOME / .kube / config
[3] Flannel에서 Pod Network를 구성합니다.
[root @ dlp ~] # kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
clusterrole.rbac.authorization.k8s.io "flannel"작성
clusterrolebinding.rbac.authorization.k8s.io "flannel"작성
serviceaccount "flannel"작성
configmap "kube-flannel-cfg"작성
daemonset.extensions "kube-flannel-ds" 만들어진

확인 (STATUS = Ready이면 OK)

[root @ dlp ~] # kubectl get 노드
이름 상태 역할 연령대
dlp.srv.world 레디 마스터 18m v1.10.0

확인 (모든 Running이면 OK)

[root @ dlp ~] # kubectl은 포드를 가져옵니다-모든 네임 스페이스
NAMESPACE 이름 준비 상태는 연령을 다시 시작합니다
kube-system etcd-dlp.srv.world 1/1 달리기 0 17 분
kube-system kube-apiserver-dlp.srv.world 1/1 달리기 0 17 분
kube-system kube-controller-manager-dlp.srv.world 1/1 달리기 0 17 분
kube- 시스템 kube-dns-86f4d74b45-rtrgd 3/3 달리기 0 18m
kube-system kube-flannel-ds-8lhqq 1/1 달리기 0 1 분
kube-system kube-proxy-cqmfz 1/1 달리기 0 18 분
kube-system kube-scheduler-dlp.srv.world 1/1 달리기 0 17 분