호스트 클러스터 Linux
1, 파티션 스왑 금지.
K8s 는 스왑 파티션이 금지되어 있는지 확인하도록 요구하고, 금지하지 않으면 초기화에 오류가 발생합니다.
각 호스트에서 다음을 수행합니다.
2. 시간대와 시간이 정확한지 확인하십시오.
시간대 설정
3. 방화벽과 selinux 를 닫습니다.
Ubuntu 는 방화벽 명령을 볼 수 있고 ufw status 는 상태를 볼 수 있으며 ubuntu20.04 는 설정할 필요 없이 기본적으로 모두 꺼집니다.
4. 호스트 이름 및 호스트 설정 (선택 사항)
꼭 필요한 것은 아니지만 직관적이고 관리하기 쉽도록 이렇게 하는 것이 좋습니다.
호스트에 호스트 이름을 각각 k8s-master, k8s-node0 1, k8s-node02 로 설정합니다.
호스트 설정
1, docker 의 기본 드라이버를 systemd 로 변경합니다
일련의 초기화 오류를 방지하려면 docker 와 Kubektl 드라이버가 일치하는지 확인하십시오. 그렇지 않으면 Kubektl 을 시작할 수 없어 오류가 발생합니다. 버전이 다르다. 일부 docker 드라이버는 cgroupfs 이고 kubectl 의 기본 드라이버는 systemd 이므로 docker 드라이버를 변경해야 합니다.
자신의 docker 드라이버 명령을 볼 수 있습니다.
Docker 드라이버를 변경하고 /etc/docker/daemon.json (없는 경우 새로 만들기) 을 편집하고 다음 시작 매개 변수를 추가합니다.
Docker 를 다시 시작합니다
각 시스템에 다음 패키지를 설치해야 합니다.
2. apt 패키지 색인을 업데이트하고 Kubernetes apt 저장소를 사용하는 데 필요한 패키지를 설치합니다.
Apt 가 HTTPS 를 통해 저장소를 사용할 수 있도록 패키지를 설치하고 설치된 소프트웨어를 무시할 수 있습니다.
3. 공용 서명 키를 다운로드하고 k8s 라이브러리를 추가합니다.
외국: 구글 클라우드 공개 서명 키 다운로드:
국내: 알리바바 출처 사용 가능:
명령에는 최신 Kubernetes 라이브러리인 Ubuntu version16.04 xenial 이 사용됩니다. 그래서 20.04 의 초점이 아닙니다.
4. apt 패키지 인덱스 업데이트, kubelet 설치, kubeadm, kubectl, 버전 잠금.
호환되지 않도록 버전을 잠급니다. 예를 들어 kubelet 의 1.7.0 버전은 API 서버 1.8.0 버전과 완벽하게 호환되며 그 반대의 경우도 마찬가지입니다.
너는 호스트에서만 조작하면 된다.
1, 오류 해결을 초기화합니다 (오류가 없으면 건너뛸 수 있음)
오류 프롬프트 1:
원인: kubectl 을 시작할 수 없습니다. journalctl -xe 가 시작 오류 메시지를 확인합니다.
해결 방법: k8s 는 시스템 드라이브를 권장하므로 docker 드라이버를 변경하고 /etc/docker/daemon.json (없는 경우 새로 만들기) 을 편집하고 다음 시작 항목 매개 변수를 추가하기만 하면 됩니다.
Docker 와 kubectel 을 다시 시작합니다
오류 프롬프트 2:
원인: 프로덕션 파일을 초기화하고 다시 초기화한 다음 삭제합니다.
오류 프롬프트 3:
해결 방법: 구성을 재설정합니다.
2. 초기화가 완료되었습니다
오류가 없으며, 마지막으로 다음 항목이 나타나 초기화가 완료되었으며 프롬프트에 따라 작업해야 함을 나타냅니다.
사용자가 루트인지 일반 사용자인지에 따라 대부분의 환경은 루트가 아니며 나도 일반 사용자이기 때문에 일반 사용자 작업 명령을 선택합니다.
수퍼유저인 경우 다음 명령을 실행합니다.
초기화가 완료되면 마지막 프롬프트 명령인 kubeadm join ... 을 사용하여 노드 시스템의 클러스터에 가입하기만 하면 됩니다.
3. 마스터 노드의 pod 네트워크 설정
마스터 노드는 네트워크 플러그인을 지원합니다. es.io/ko/docs/concepts/cluster-administration/addons/
Calico 네트워크 플러그인은 es/self-managed-on prem/on premises 에 설치됩니다.
Calico 공식 홈페이지는 1)50 개 노드 이하, 2)50 개 노드 이상, 3)etcd datastore (공식적으로 추천하지 않음) 의 세 가지 설치 방법을 제공합니다.
여기서 첫 번째 선택:
설치가 완료되면 kubectl get node 에서 노드 상태를 볼 수 있습니다. NotReady 에서 Ready 로 바뀌면 정상입니다. 완료하는 데 몇 분이 걸립니다.
1, 노드가 마스터 노드에 추가됩니다.
모든 노드 시스템 작업에서 설치된 kubelet, kubeadm 및 kubectl 을 통합합니다. 마스터로 초기화를 완료한 후 마지막 프롬프트 명령을 제공하여 루트 사용자를 사용하는 것을 잊지 마십시오.
가입이 성공하면 다음과 같은 프롬프트가 표시됩니다.
Kubelet 서비스가 정상적으로 시작되었는지 다시 한 번 확인합니다.
2, 구덩이에주의하십시오.
/root-0/: 마스터 노드에 가입하려면 루트 사용자가 마스터 노드에 가입하기 전에 entry 명령을 실행해야 합니다.
노드가 마스터 노드에 추가될 때까지 kubelet 서비스를 시작할 수 없습니다. 이것은 정상이며 오류는 다음과 같이 보고됩니다.
파일이 손실되어 마스터 노드가' kubeadminit' 생성을 초기화하기 때문입니다.
노드 노드는 초기화할 필요가 없습니다. 루트 사용자 Kubeadm Node 을 마스터에 추가하기만 하면 됩니다.
2. 다음과 같이 파일이 이미 존재하는 힌트를 추가하는 경우 :
그 이유는 마스터 노드에 가입했기 때문입니다. 가입하지 않았더라도 파일이 작성되므로 노드를 재설정하고 다시 가입해야 하기 때문입니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 성공명언) 리셋 명령:
3. 주 서버의 노드를 봅니다.
추가되면 마스터 노드 kubectl get 노드에서 추가된 모든 노드를 볼 수 있습니다.
여기 k8s 클러스터가 만들어졌습니다. 제 다음 문장 k8s 를 참고하시기 바랍니다. K8S 는 nginx 클러스터 구축의 사용과 실천을 초보적으로 잘 알고 있습니다.