docker 관리 도구: Kubernetes 노트 없음
6372 단어 Dockerkubernetes
거치다
docker를 도입한 후, 나는 점점 그것의 편리성을 느꼈다.정말 컨테이너 나리만 생각했어요.그러나 용기 수량은 웹 서비스stack의 증가에 따라 증가하고 관리도 복잡해진다.
또 중요한 데이터 분석 농장의 GPU 자원의 이용 상황은 이상적이라고 할 수 없다.
목표는 GPU 일정 기능입니다.
갑시다
시스템 구성
시스템 구성
Kubernetes 설치
Kubernetes라는 이름이 좀 길어요. 다행히 개발 커뮤니티에서 k8s라는 별명을 부르기 시작했어요.아래에도 k8s를 쓰세요.
정부문서에 기재된 절차를 추천합니다.
kubeadm,kubelet,kubectl 설치
docker를 설치한 전제에서 호스트에kubeadm,kubelet,kubectl를 설치합니다.
pre-install.sh
apt-get update && apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
클러스터 생성
k8s로 구축된 집단, 용기의 관리는 POD 단위로 진행된다.하나의 용기는 하나 이상의 용기를 포함한다.
k8s를 통해 군집 중의 노드에 플레이어를 던지면 부하 균형을 쉽게 할 수 있다.
마스터 노드 설치
클러스터를 시작하는 첫 번째 단계는 마스터를 확인하는 것입니다.노드의 자원 이용 상태 감시와 용기 관리는 모두 주 노드에서 진행된다.
$ kubeadm init
네트워크 박스 설치
이 절차는 매우 중요하다. 만약 잘못하면 군집에 여러 가지 문제가 발생할 수 있다.
문서는 몇 가지네트워크 추가 모듈를 소개했는데 여기서 사용합니다Weave Net.
Adon이라고 하는데 실제로는 컨테이너화되어 일련의 Pod가 되었다.
$ kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
대부분 bash에 이상의 명령을 입력하고 설치를 완료합니다가상 머신과 물리 머신의 연결 환경에 따라 나는 그렇게 순조롭지 않을 것이라고 생각한다.
따라서pod 정의 파일을 다운로드하고 필요한 부분을 편집하며 네트워크pod를 설정하는 것이 상책이다.
다운로드네트워크 패키지 정의 파일
$ Curl -O -L https://cloud.weave.works/k8s/v1.7/net
예: 전용 IP 주소 편집net.yaml
...
containers:
- name: weave
env:
- name: IPALLOC_RANGE
value: 10.0.0.0/16
...
편집된 정의 파일을 클러스터에 적용합니다.$ kubectl apply -f net.yaml
다음은 작업자 노드를 주 노드에 등록합니다.GPU 기능 활성화
작업자 노드에 설치된 GPU를 사용하려면 해당 설정이 필요합니다.
nano /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
설정 파일을 열면 그 안에 이런 느낌이 든다.10-kubeadm.conf
...
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS --feature-gates="Accelerators=true [...]"
...
구성이 완료되면 서비스를 다시 시작합니다.restart-kubelet.sh
systemctl daemon-reload
systemctl restart kubelet
- 호스트 하나만 있음
광범위한 의미에서 호스트 한 대만 사용하면 군집을 구축할 수 있다.또는 마스터 노드 자체도 Worker 노드로 작동합니다.
$ kubectl taint nodes --all node-role.kubernetes.io/master-
- 2개 이상의 호스트
일반적으로 집단은 주 노드와 작업기 노드로 나뉜다.Worker 노드에서 등록하려면 마스터 노드 설정 완료 메시지에서 다음 명령을 입력합니다.
$ kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>
설치 후 단계
여기까지 대략 알아차렸습니다. 위의 명령에는 sudo가 없습니다.k8s 설치부터 군집 설치까지 모두 루트 권한입니다.
사실 그룹을 설정할 때 sudo 권한만 있으면 돼요.루트 권한이 대단하지만 눈치채지 못할 때 어떤 파일이 삭제되는 경우도 있습니다.
그래서 가능한 한 루트 권한을 사용하지 않습니다.
여기에서 sudo 권한이 있는 계정에 k8s 접근 권한을 부여합니다.
post-install.sh
cp /etc/kubernetes/admin.conf $HOME/
chown $(id -u):$(id -g) $HOME/admin.conf
echo "export KUBECONFIG=$HOME/admin.conf" >> ~/.bashrc
echo "source <(kubectl completion bash)" >> ~/.bashrc
총결산
k8s를 사용하면 다중 호스트의 용기 관리가 수월해지겠죠.
그러나 호스트 수가 적으면 k8s의 본래 목적은 데이터 센터와 같은 규모이고 용기 관리 기능은 실감이 나지 않을 것이다.
갑자기 k8s에 뛰어들어 벽에 부딪힐 수도 있다.그래서 상황에 따라 적당한 도구를 이용하는 것이 오케스트라다.
다음은 역시docker 용기 관리 도구입니다. 둘 다 용기의 상태 설정을 유지할 수 있습니다.
portainer ( github )
rancher ( github )
참고 자료
- Kubernetes 공식 문서
Reference
이 문제에 관하여(docker 관리 도구: Kubernetes 노트 없음), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ishouyou/items/44959a5ef290c693a00b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(docker 관리 도구: Kubernetes 노트 없음), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ishouyou/items/44959a5ef290c693a00b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)