Kubernetes: 초보자 및 혼자서 배포하는 방법
5377 단어 eksawsdevopskubernetes
시작하겠습니다.
Kubernetes는 올바르게 단순화하면 매우 쉬운 일 중 하나이지만 세부 사항을 보기 시작하면 다소 어려울 수 있습니다. 지금 세부 사항에 대해 걱정하지 말고 무언가를 진행하려고 노력하십시오. 시간과 경험이 있으면 모든 것이 이해될 것입니다. :)
몇 가지 기본 "알림"먼저. 나는 당신에게 정의를 지루하게하지 않을 것입니다, 나는 당신이 그것이 무엇인지 알고 있다고 가정합니다.
Kubernetes는 여러 "핵심"리소스를 기반으로 합니다. 다른 항목(StatefulSet, LimitRange 등)을 추가할 수 있지만 다음과 같이 작업하면 다음과 같이 작동합니다.
서비스. 기본적으로 포드에 대한 액세스를 정의하는 것입니다
배포: 원하는 포드 및 복제본을 선언합니다(원하는 포드 수),
Ingress: 클러스터에서 서비스에 액세스하는 방법 관리
Ingress 컨트롤러: Ingress Nginx 컨트롤러
네임스페이스: 환경.
그 위에 DNS 이름(route53 ...)과 인증서를 추가합니다.
배포하려면 다음과 같은 "일반"단계를 따릅니다.
이 시리즈에서는 EKS에 중점을 둘 것입니다.
클러스터를 만듭니다.
콘솔, CloudFormation 및 Terraform을 사용하여 다양한 방법으로 클러스터를 생성할 수 있습니다. 나는 그 3 가지 방법을 시도했습니다. Cloudformation으로 시작한 다음 수동으로 진행한 다음 Terraform으로 진행했습니다. 저는 어떻게 작동하는지 이해해야 하는 사람이므로 TF에 가기 전에 수동으로 수행해야 합니다.
나는 AWShttps://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html의 가이드를 따랐고 추천만 할 수 있다. 나는 처음에 어려움을 겪었다는 것을 알고 있습니다. 기억나는 몇 가지가 있습니다.
제가 추천할 수 있는 가장 좋은 방법은 몇 번 해보는 것입니다. 어려움을 겪고 있다면 트위터에는 큰 kubernetes 커뮤니티가 있습니다. 저에게 연락 주시기 바랍니다(또는 여기 댓글로).
인그레스 컨트롤러 및 로드 밸런서 생성
솔직히 말해서, 이 가이드(https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes [당신은 cert-manager가 필요하지 않습니다])는 정말 간단하고 따라하기 쉽습니다.
Ingress Controller는 기본적으로 누군가가 요청한 요청을 받아 올바른 서비스/배포로 보냅니다. nginx 수신 컨트롤러를 생성한 다음 로드 밸런서를 생성하는 것이 좋습니다. LB가 AWS에 표시되는 데 시간이 걸릴 수 있습니다.
NLB 버전은 다음과 같습니다.
kind: Service
apiVersion: v1
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: nlb
service.beta.kubernetes.io/aws-load-balancer-internal: "true"
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: #{Certificate}
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: "ssl"
spec:
externalTrafficPolicy: Cluster
type: LoadBalancer
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- name: http
port: 80
targetPort: http
- name: https
port: 443
targetPort: https
필요한 리소스 쓰기
현재 사용하고 있는 템플릿을 알려드리겠습니다. 자유롭게 수정하세요.
시간이 지나면 환경 변수를 ConfigMap으로 이동하는 방법을 살펴볼 수 있습니다. Env는 "가장 안전한"방법은 아니지만 충분히 잘 수행합니다.
저와 같은 포트를 사용할 필요가 없습니다. 그러나 Dockerfile에서 해당 포트를 노출해야 합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: #{Name}
namespace: #{Namespace}
spec:
replicas: 2
selector:
matchLabels:
app: #{Name}
template:
metadata:
labels:
app: #{Name}
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- #{Name}
containers:
- name: #{Name}
image: #{AWSAccount}.dkr.ecr.#{Region}.amazonaws.com/#{Name}:#{Number}
env:
- name: "something"
value: "something"
ports:
- containerPort: 80
name: #{ContainerPort}
---
apiVersion: v1
kind: Service
metadata:
name: #{Name}-svc
namespace: #{Namespace}
spec:
ports:
- port: 8080
targetPort: 80
selector:
app: #{Name}
type: NodePort
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: #{Name}
namespace: #{Namespace}
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- host: #{Host}
http:
paths:
- path: #{Path}(/|$)(.*)
backend:
serviceName: #{Name}-svc
servicePort: 8080
그리고 그것은 기본적으로 초보자 친화적인 EKS 클러스터를 위한 것입니다!
UI 대시보드( https://docs.aws.amazon.com/eks/latest/userguide/dashboard-tutorial.html )를 설치하는 것도 좋습니다.
즐거운 시간 보내세요!
Reference
이 문제에 관하여(Kubernetes: 초보자 및 혼자서 배포하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/skylerdevops/kubernetes-how-to-deploy-as-a-beginner-and-by-yourself-20bg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)