
Ubuntu 20 DPS에서 kubernetes 클러스터를 설정하는 방법을 알고 싶습니다. docker와 kubeadm을 설치했습니다. 배포, 서비스 및 수신이 거의 없는 방법을 알고 있으며 이미 구성된 kubernetes 클러스터(aks)를 사용했습니다.
일부 웹 앱(웹 사이트, API, CDN 등)을 노출하려면 dps를 설정해야 합니다. kubernetes를 구성하려면 어떤 단계가 필요합니까? 특정 하위 DNS에 특정 웹사이트를 노출하는 방법(예: 3차 도메인: trd.mysite.com)
nginx-controller, metallb 및 flannel과 같은 일부 애드온을 설치해야 합니까? 이러한 네트워크 관련 내용을 이해하지 못합니다. 강좌/튜토리얼에도 관심이 있습니다. 도와주세요. 감사합니다!
편집: 이것은 내 yaml입니다. 지금은 단순히 기본 도메인(xxxx.com)에 웹앱을 노출하고 내부 REST API와 나머지 API를 사용하고 3차 수준 도메인에 노출할 다른 웹앱을 추가하겠습니다( yyy.xxxxx.com) http://www.mediafire.com/file/c7qwouqri441wek/Kube.zip/file
답변1
알았어, 그럼 봐봐. 서버를 성공적으로 실행하려면 다음이 필요합니다.
1. 도커
2.다음을 사용하여 설치하려는 경우kubeadm- 아래 Kubernetes 패키지가 필요합니다. 이 답변에서는 kubeadm 방식에 대해서만 논의합니다. 다른 도구에 대해서는 내부 설명서를 참조하세요.
그렇지 않으면 예를 들어 사용할 수 있습니다미니쿠베,쿠베스프레이,친절한. 나는 미니쿠베와 친절한 것을 좋아한다.
- kind는 Docker 컨테이너 "노드"를 사용하여 로컬 Kubernetes 클러스터를 실행하기 위한 도구입니다. kind는 주로 Kubernetes 자체를 테스트하기 위해 설계되었지만 로컬 개발이나 CI에 사용될 수도 있습니다.
- MiniKube는 일반적으로 누군가가 시작하려고 할 때 발견되는 첫 번째 Kubernetes 기술입니다(Kubernetes 공식 문서는 miniKube를 사용하여 첫 번째 클러스터를 배포하는 튜토리얼을 제공합니다). 노트북에 설치하기 매우 간단한 솔루션이며 학습 및 테스트용으로 설계되었습니다. 시작되면 단일 노드 클러스터(가장 작은 크기)가 배포됩니다.
여기에서 모든 도구에 대해 읽을 수 있습니다.
삼. CNI- 클러스터 내부의 적절한 네트워킹을 위해.
CNI 플러그인은 수십 개가 있으므로 무엇이든 선택해야 합니다.
- 전체 목록은 여기에 있습니다:클러스터 네트워킹
- 비교표:https://kubedex.com/kubernetes-network-plugins/
가장 인기있는 것은 Flannel과 Calico입니다. 때로는 (필요에 따라) 설치할 수 있습니다운하. 즉, Calico를 동시에 설치하는 것입니다.네트워크 정책+ 네트워킹을 위한 일반 CNI인 플란넬.
여기서 중요한 TIP! CNI를 올바르게 설치하려면 클러스터 생성 전에 미리 선택해야 합니다. 적절한 플래그를 사용하여 클러스터를 초기화해야 하기 때문입니다 --pod-network-cidr=
.
kubeadm init --pod-network-cidr=10.244.0.0/16
플란넬용kubeadm init --pod-network-cidr=192.168.0.0/16
칼리코를 위한
클러스터의 서비스(일반적으로 HTTP)에 대한 외부 액세스를 관리하는 API 개체입니다.
Ingress는 로드 밸런싱, SSL 종료 및 이름 기반 가상 호스팅을 제공할 수 있습니다.
Ingress 리소스가 작동하려면 클러스터에 다음이 있어야 합니다.수신 컨트롤러달리기.
다양한 수신 컨트롤러의 전체 목록:수신 컨트롤러. 비교 매트릭스는여기
가장 인기 있는 것:Nginx 수신 컨트롤러, Kubernetes 수신 컨트롤러(OOB, nginx 기반. 하지만 차이점이 있음), Traefik
클러스터를 만드는 단계:
- 다음과 같은 훌륭한 기사를 사용할 수 있습니다단일 노드 Kubernetes 설정. 그것부터 시작하십시오 - 모든 단계를 올바르게 보여줍니다.
- 내 답변을 사용할 수 있습니다.Kubernetes API 서버가 단일 kubeadm 클러스터에서 시작되지 않습니다.. 이 답변은 kubeadm을 사용하여 클러스터를 스핀업하는 방법에 대한 자세한 단계별 지침을 제공합니다. 메모 하나.
- 공식 문서:kubeadm을 사용하여 클러스터 생성
마스터에서 Pod를 실행할 수 있도록 Untaint해야 합니다. 이것이 없으면 마스터에서 포드를 실행할 수 없습니다.
kubectl taint nodes --all node-role.kubernetes.io/master-
답변2
이 모든 내용을 읽기 전에 ansbile을 사용하여 클러스터를 생성하는 kubespray를 살펴보십시오. 그러나 kubernetes가 내부적으로 어떻게 작동하는지 알고 싶다면 나머지 답변을 따르십시오.
kubernetes 클러스터 설정의 첫 번째 단계는 구성 요소와 작동 방식을 아는 것입니다.
단순히 kubeadm을 설치해도 클러스터가 회전하지 않으므로 yaml 파일을 배포하기 전에 요구 사항에 필요한 모든 구성 요소를 설치해야 합니다.
여기에 github 페이지 링크가 있습니다. kubeadm을 사용하여 3개의 마스터 노드와 원하는 만큼의 작업자 노드가 있는 전체 kubernetes 클러스터를 스핀업합니다.
참고: 이전 버전을 사용하지만 Kubernetes 구성 요소를 학습하는 데 좋은 참고 자료입니다. 중요한 클러스터 구성 요소에 대한 yaml 생성과 관련된 스크립트를 검사하고 해당 스크립트가 수행하는 작업에 대한 클러스터 구성 요소의 세부 사항도 읽어 보십시오.
https://github.com/cookeem/kubeadm-ha/blob/master/v1.11/README.md
도메인의 클러스터에 웹앱을 노출하려면 수신 리소스를 생성할 수 있는 수신 컨트롤러 관리자를 설치해야 합니다.
다음은 kubernetes 문서의 수신 yaml 예입니다.
https://kubernetes.io/docs/concepts/services-networking/ingress/
유효한 인증서로 https를 수행하려면 kubernetes 비밀을 사용하거나 자동으로 획득 및 갱신을 암호화할 수 있도록 클러스터에서 인증서 관리자를 구성할 수 있습니다.
두 옵션 모두 잘 문서화되어 있으며 Google 검색을 통해 인증서 생성 방법을 찾기만 하면 됩니다. 수신 리소스는 이러한 인증서를 사용합니다.
도메인이 하나의 클러스터 노드(작업자 또는 마스터)의 공개 IP 주소를 가리키는지 확인하세요.
metallb는 클라우드 공급자가 내장한 로드 밸런서 서비스 유형을 제공하기 위해 온프레미스 클러스터와 함께 사용됩니다.
flannel은 클러스터에 네트워킹을 제공하는 네트워크 플러그인입니다.
Pod가 서로 통신할 수 있도록 하려면 flannel, calico 또는 기타 지원되는 플러그인과 같은 네트워크 플러그인 cni가 있어야 합니다.
flannel을 클러스터의 네트워크 스위치로 생각하세요.