Third Korean l10n work for release 1.18
- Translate cluster-administration/networking.md in Korean - Fix issue with concepts/storage/volumes.md - Translate /concepts/configuration/pod-overhead in Korean - Update to Outdated files in the dev-1.18-ko.3 branch. - Translate concepts/configuration/configmap.md in Korean - Translate contribute/review/reviewing-prs/ in Korean - Translate concepts/configuration/pod-priority-preemption.md in Korean - Translate tasks/configure-pod-container/configure-volume-storage in Korean - Translate contribute/new-content/new-content/ in Korean - Translate concepts/architecture/control-plane-node-communication.md in Korean - Restore the deleted master-node-communication.md file - Translate concepts/cluster-administration/addons.md in Korean - Translate contribute/new-content/overview/ in Korean - Translate tasks/tools/install-kubectl.md in Korean - Translate concepts/configuration/manage-resources-containers.md in Korean - Translate tasks/administer-cluster/kubeadm/kubeadm-upgrade/ in Korean - add new words to Korean glossary and fix minor - Translate contribute/style/_index.md in Korean - Translate concepts/cloud-administration/cloud-providers.md in Korean - Translate contribute/review/for-approvers.md in Korean Co-authored-by: Jerry Park <jaehwa@gmail.com> Co-authored-by: Seokho Son <shsongist@gmail.com> Co-authored-by: jmyung <jesang.myung@gmail.com> Co-authored-by: coolguyhong <podolsmith@naver.com> Co-authored-by: Yuk, Yongsu <ysyukr@gmail.com> Co-authored-by: bluefriday <bluefriday86@gmail.com> Co-authored-by: SangshikLee <neolss@gmail.com>
This commit is contained in:
committed by
Claudia J.Kang
parent
c74ce882ec
commit
ca62e21766
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: 애드온 설치
|
||||
content_template: templates/concept
|
||||
---
|
||||
|
||||
{{% capture overview %}}
|
||||
|
||||
|
||||
애드온은 쿠버네티스의 기능을 확장한다.
|
||||
|
||||
이 페이지는 사용 가능한 일부 애드온과 관련 설치 지침 링크를 나열한다.
|
||||
|
||||
각 섹션의 애드온은 알파벳 순으로 정렬되어 있다. 순서는 우선 순위와는 상관없다.
|
||||
|
||||
{{% /capture %}}
|
||||
|
||||
|
||||
{{% capture body %}}
|
||||
|
||||
## 네트워킹과 네트워크 폴리시
|
||||
|
||||
|
||||
* [ACI](https://www.github.com/noironetworks/aci-containers)는 Cisco ACI로 통합 컨테이너 네트워킹 및 네트워크 보안을 제공한다.
|
||||
* [Calico](https://docs.projectcalico.org/latest/introduction/)는 네트워킹 및 네트워크 폴리시 제공자이다. Calico는 유연한 네트워킹 옵션을 지원하므로 BGP 유무에 관계없이 비-오버레이 및 오버레이 네트워크를 포함하여 가장 상황에 맞는 옵션을 선택할 수 있다. Calico는 동일한 엔진을 사용하여 서비스 메시 계층(service mesh layer)에서 호스트, 파드 및 (이스티오(istio)와 Envoy를 사용하는 경우) 애플리케이션에 대한 네트워크 폴리시를 적용한다.
|
||||
* [Canal](https://github.com/tigera/canal/tree/master/k8s-install)은 Flannel과 Calico를 통합하여 네트워킹 및 네트워크 폴리시를 제공한다.
|
||||
* [Cilium](https://github.com/cilium/cilium)은 L3 네트워크 및 네트워크 폴리시 플러그인으로 HTTP/API/L7 폴리시를 투명하게 시행할 수 있다. 라우팅 및 오버레이/캡슐화 모드를 모두 지원하며, 다른 CNI 플러그인 위에서 작동할 수 있다.
|
||||
* [CNI-Genie](https://github.com/Huawei-PaaS/CNI-Genie)를 사용하면 쿠버네티스는 Calico, Canal, Flannel, Romana 또는 Weave와 같은 CNI 플러그인을 완벽하게 연결할 수 있다.
|
||||
* [Contiv](http://contiv.github.io)는 다양한 유스케이스와 풍부한 폴리시 프레임워크를 위해 구성 가능한 네트워킹(BGP를 사용하는 네이티브 L3, vxlan을 사용하는 오버레이, 클래식 L2 그리고 Cisco-SDN/ACI)을 제공한다. Contiv 프로젝트는 완전히 [오픈소스](http://github.com/contiv)이다. [인스톨러](http://github.com/contiv/install)는 kubeadm을 이용하거나, 그렇지 않은 경우에 대해서도 설치 옵션을 모두 제공한다.
|
||||
* [Contrail](http://www.juniper.net/us/en/products-services/sdn/contrail/contrail-networking/)은 [Tungsten Fabric](https://tungsten.io)을 기반으로 하며, 오픈소스이고, 멀티 클라우드 네트워크 가상화 및 폴리시 관리 플랫폼이다. Contrail과 Tungsten Fabric은 쿠버네티스, OpenShift, OpenStack 및 Mesos와 같은 오케스트레이션 시스템과 통합되어 있으며, 가상 머신, 컨테이너/파드 및 베어 메탈 워크로드에 대한 격리 모드를 제공한다.
|
||||
* [Flannel](https://github.com/coreos/flannel/blob/master/Documentation/kubernetes.md)은 쿠버네티스와 함께 사용할 수 있는 오버레이 네트워크 제공자이다.
|
||||
* [Knitter](https://github.com/ZTE/Knitter/)는 쿠버네티스 파드에서 여러 네트워크 인터페이스를 지원하는 플러그인이다.
|
||||
* [Multus](https://github.com/Intel-Corp/multus-cni)는 쿠버네티스에서 SRIOV, DPDK, OVS-DPDK 및 VPP 기반 워크로드 외에 모든 CNI 플러그인(예: Calico, Cilium, Contiv, Flannel)을 지원하기 위해 쿠버네티스에서 다중 네트워크 지원을 위한 멀티 플러그인이다.
|
||||
* [NSX-T](https://docs.vmware.com/en/VMware-NSX-T/2.0/nsxt_20_ncp_kubernetes.pdf) 컨테이너 플러그인(NCP)은 VMware NSX-T와 쿠버네티스와 같은 컨테이너 오케스트레이터 간의 통합은 물론 NSX-T와 PKS(Pivotal 컨테이너 서비스) 및 OpenShift와 같은 컨테이너 기반 CaaS/PaaS 플랫폼 간의 통합을 제공한다.
|
||||
* [Nuage](https://github.com/nuagenetworks/nuage-kubernetes/blob/v5.1.1-1/docs/kubernetes-1-installation.rst)는 가시성과 보안 모니터링 기능을 통해 쿠버네티스 파드와 비-쿠버네티스 환경 간에 폴리시 기반 네트워킹을 제공하는 SDN 플랫폼이다.
|
||||
* [Romana](http://romana.io)는 [네트워크폴리시 API](/docs/concepts/services-networking/network-policies/)도 지원하는 파드 네트워크용 Layer 3 네트워킹 솔루션이다. Kubeadm 애드온 설치에 대한 세부 정보는 [여기](https://github.com/romana/romana/tree/master/containerize)에 있다.
|
||||
* [Weave Net](https://www.weave.works/docs/net/latest/kube-addon/)은 네트워킹 및 네트워크 폴리시를 제공하고, 네트워크 파티션의 양면에서 작업을 수행하며, 외부 데이터베이스는 필요하지 않다.
|
||||
|
||||
## 서비스 검색
|
||||
|
||||
* [CoreDNS](https://coredns.io)는 유연하고 확장 가능한 DNS 서버로, 파드를 위한 클러스터 내 DNS로 [설치](https://github.com/coredns/deployment/tree/master/kubernetes)할 수 있다.
|
||||
|
||||
## 시각화 & 제어
|
||||
|
||||
* [대시보드](https://github.com/kubernetes/dashboard#kubernetes-dashboard)는 쿠버네티스를 위한 대시보드 웹 인터페이스이다.
|
||||
* [Weave Scope](https://www.weave.works/documentation/scope-latest-installing/#k8s)는 컨테이너, 파드, 서비스 등을 그래픽으로 시각화하는 도구이다. [Weave Cloud 어카운트](https://cloud.weave.works/)와 함께 사용하거나 UI를 직접 호스팅한다.
|
||||
|
||||
## 인프라스트럭처
|
||||
|
||||
* [KubeVirt](https://kubevirt.io/user-guide/#/installation/installation)는 쿠버네티스에서 가상 머신을 실행하기 위한 애드온이다. 일반적으로 베어 메탈 클러스터에서 실행한다.
|
||||
|
||||
## 레거시 애드온
|
||||
|
||||
더 이상 사용되지 않는 [cluster/addons](https://git.k8s.io/kubernetes/cluster/addons) 디렉터리에 다른 여러 애드온이 문서화되어 있다.
|
||||
|
||||
잘 관리된 것들이 여기에 연결되어 있어야 한다. PR을 환영한다!
|
||||
|
||||
{{% /capture %}}
|
||||
@@ -0,0 +1,414 @@
|
||||
---
|
||||
title: 클라우드 제공자
|
||||
content_template: templates/concept
|
||||
weight: 30
|
||||
---
|
||||
|
||||
{{% capture overview %}}
|
||||
이 페이지에서는 특정 클라우드 제공자에서 실행 중인 쿠버네티스를 관리하는 방법에
|
||||
대해 설명한다.
|
||||
{{% /capture %}}
|
||||
|
||||
|
||||
{{% capture body %}}
|
||||
### kubeadm
|
||||
[kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/)은 쿠버네티스 클러스터를 생성하는 데 많이 사용하는 옵션이다.
|
||||
kubeadm에는 클라우드 제공자에 대한 구성 정보를 지정하는 구성 옵션이 있다. 예를 들어
|
||||
kubeadm을 사용하여 일반적인 인-트리(in-tree) 클라우드 제공자를 아래와 같이 구성할 수 있다.
|
||||
|
||||
```yaml
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
kind: InitConfiguration
|
||||
nodeRegistration:
|
||||
kubeletExtraArgs:
|
||||
cloud-provider: "openstack"
|
||||
cloud-config: "/etc/kubernetes/cloud.conf"
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
kind: ClusterConfiguration
|
||||
kubernetesVersion: v1.13.0
|
||||
apiServer:
|
||||
extraArgs:
|
||||
cloud-provider: "openstack"
|
||||
cloud-config: "/etc/kubernetes/cloud.conf"
|
||||
extraVolumes:
|
||||
- name: cloud
|
||||
hostPath: "/etc/kubernetes/cloud.conf"
|
||||
mountPath: "/etc/kubernetes/cloud.conf"
|
||||
controllerManager:
|
||||
extraArgs:
|
||||
cloud-provider: "openstack"
|
||||
cloud-config: "/etc/kubernetes/cloud.conf"
|
||||
extraVolumes:
|
||||
- name: cloud
|
||||
hostPath: "/etc/kubernetes/cloud.conf"
|
||||
mountPath: "/etc/kubernetes/cloud.conf"
|
||||
```
|
||||
|
||||
인-트리 클라우드 제공자는 일반적으로 [kube-apiserver](/docs/admin/kube-apiserver/), [kube-controller-manager](/docs/admin/kube-controller-manager/)
|
||||
및 [kubelet](/docs/admin/kubelet/)의 커맨드 라인에 지정된 `--cloud-provider` 와 `--cloud-config` 가 모두 필요하다.
|
||||
각 제공자에 대해 `--cloud-config` 에 지정된 파일의 내용도 아래에 설명되어 있다.
|
||||
|
||||
모든 외부 클라우드 제공자의 경우, 아래 제공자에 대한 제목 아래에 있는 개별 리포지터리의 지침을 따르거나,
|
||||
[모든 리포지터리 목록](https://github.com/kubernetes?q=cloud-provider-&type=&language=)을 볼 수 있다
|
||||
|
||||
## AWS
|
||||
이 섹션에서는 Amazon Web Services에서 쿠버네티스를 실행할 때 사용할 수 있는
|
||||
모든 구성에 대해 설명한다.
|
||||
|
||||
이 외부 클라우드 제공자를 사용하려는 경우, 해당 리포지터리는 [kubernetes/cloud-provider-aws](https://github.com/kubernetes/cloud-provider-aws#readme)이다.
|
||||
|
||||
### 노드 이름
|
||||
|
||||
AWS 클라우드 제공자는 AWS 인스턴스의 프라이빗 DNS 이름을 쿠버네티스 노드 오브젝트의 이름으로 사용한다.
|
||||
|
||||
### 로드 밸런서
|
||||
아래와 같이 어노테이션을 구성하여 AWS의 특정 기능을 사용하도록
|
||||
[외부 로드 밸런서](/docs/tasks/access-application-cluster/create-external-load-balancer/)를 설정할 수 있다.
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: example
|
||||
namespace: kube-system
|
||||
labels:
|
||||
run: example
|
||||
annotations:
|
||||
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:xx-xxxx-x:xxxxxxxxx:xxxxxxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx #이 값을 교체한다
|
||||
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
|
||||
spec:
|
||||
type: LoadBalancer
|
||||
ports:
|
||||
- port: 443
|
||||
targetPort: 5556
|
||||
protocol: TCP
|
||||
selector:
|
||||
app: example
|
||||
```
|
||||
_어노테이션_ 을 사용하여 AWS의 로드 밸런서 서비스에 다른 설정을 적용할 수 있다. 다음은 AWS ELB에서 지원하는 어노테이션에 대해 설명한다.
|
||||
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-access-log-emit-interval`: 액세스 로그 방출 간격을 지정하는 데 사용된다.
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-access-log-enabled`: 서비스에서 액세스 로그를 활성화하거나 비활성화하는 데 사용된다.
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name`: 액세스 로그 s3 버킷 이름을 지정하는 데 사용된다.
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix`: 액세스 로그 s3 버킷 접두사를 지정하는 데 사용된다.
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags`: 서비스에서 쉼표로 구분된 키-값 쌍의 목록을 지정하여 ELB에 추가 태그로 기록된다. 예를 들면 다음과 같다. `"Key1=Val1,Key2=Val2,KeyNoVal1=,KeyNoVal2"`
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-backend-protocol`: 서비스에서 리스너 뒤의 백엔드(파드)가 언급한 프로토콜을 지정하는 데 사용된다. 만약 `http` (기본값) 또는 `https` 인 경우, 연결을 종료하고 헤더를 파싱하는 HTTPS 리스너가 생성된다. `ssl` 이나 `tcp` 로 설정된 경우, "원시(raw)" SSL 리스너가 사용된다. `http` 로 설정하고 `aws-load-balancer-ssl-cert` 를 사용하지 않았다면 HTTP 리스너가 사용된다.
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-ssl-cert`: 서비스에서 보안 리스너를 요청하는 데 사용된다. 값은 유효한 인증서 ARN이다. 자세한 내용은, [ELB 리스너 구성](https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/classic/elb-listener-config.html)을 참고한다. CertARN은 IAM 또는 CM 인증서 ARN이다(예: `arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012`).
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-connection-draining-enabled`: 서비스에서 연결 드레이닝(draining)을 활성화하거나 비활성화하는 데 사용된다.
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-connection-draining-timeout`: 서비스에서 연결 드레이닝 타임아웃 값을 지정하는 데 사용된다.
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout`: 서비스에서 유휴 연결 타임아웃 값을 지정하는 데 사용된다.
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled`: 서비스에서 교차 영역의 로드 밸런싱을 활성화하거나 비활성화하는 데 사용된다.
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-security-groups`: 생성된 ELB에 추가할 보안 그룹을 지정하는 데 사용된다. 이는 이전에 ELB에 할당된 다른 모든 보안 그룹을 대체한다.
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-extra-security-groups`: 서비스에서 생성된 ELB에 추가할 추가적인 보안 그룹을 지정하는 데 사용된다.
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-internal`: 서비스에서 내부 ELB 사용 희망을 표시하기 위해 사용된다.
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-proxy-protocol`: 서비스에서 ELB에서 프록시 프로토콜을 활성화하는 데 사용된다. 현재는 모든 ELB 백엔드에서 프록시 프로토콜을 사용하도록 설정하는 `*` 값만 허용한다. 향후에는 특정 백엔드에서만 프록시 프로토콜을 설정할 수 있도록 이를 조정할 수 있게 된다.
|
||||
* `service.beta.kubernetes.io/aws-load-balancer-ssl-ports`: SSL/HTTPS 리스너를 사용할 쉼표로 구분된 포트의 목록을 지정하기 위해 서비스에서 사용된다. 기본값은 `*`(모두)이다.
|
||||
|
||||
AWS 어노테이션에 대한 정보 출처는 [aws.go](https://github.com/kubernetes/legacy-cloud-providers/blob/master/aws/aws.go)의 코멘트이다.
|
||||
|
||||
## Azure
|
||||
|
||||
이 외부 클라우드 제공자를 사용하려는 경우, 해당 리포지터리는 [kubernetes/cloud-provider-azure](https://github.com/kubernetes/cloud-provider-azure#readme)이다.
|
||||
|
||||
### 노드 이름
|
||||
|
||||
Azure 클라우드 제공자는 쿠버네티스 노드 오브젝트의 이름으로 노드의 (kubelet에 의해 결정되거나 `--hostname-override` 로 재정의된) 호스트 이름(hostname)을 사용한다.
|
||||
참고로 쿠버네티스 노드 이름은 Azure VM 이름과 일치해야 한다.
|
||||
|
||||
## CloudStack
|
||||
|
||||
이 외부 클라우드 제공자를 사용하려는 경우, 해당 리포지터리는 [apache/cloudstack-kubernetes-provider](https://github.com/apache/cloudstack-kubernetes-provider)이다.
|
||||
|
||||
### 노드 이름
|
||||
|
||||
CloudStack 클라우드 제공자는 쿠버네티스 노드 오브젝트의 이름으로 노드의 (kubelet에 의해 결정되거나 `--hostname-override` 로 재정의된) 호스트 이름을 사용한다.
|
||||
참고로 쿠버네티스 노드 이름은 CloudStack VM 이름과 일치해야 한다.
|
||||
|
||||
## GCE
|
||||
|
||||
이 외부 클라우드 제공자를 사용하려는 경우, 해당 리포지터리는 [kubernetes/cloud-provider-gcp](https://github.com/kubernetes/cloud-provider-gcp#readme)이다.
|
||||
|
||||
### 노드 이름
|
||||
|
||||
GCE 클라우드 제공자는 쿠버네티스 노드 오브젝트의 이름으로 노드의 (kubelet에 의해 결정되거나 `--hostname-override` 로 재정의된) 호스트 이름을 사용한다.
|
||||
참고로 쿠버네티스 노드 이름의 첫 번째 세그먼트는 GCE 인스턴스 이름과 일치해야 한다(예: `kubernetes-node-2.c.my-proj.internal` 이름이 지정된 노드는 `kubernetes-node-2` 이름이 지정된 인스턴스에 해당해야 함).
|
||||
|
||||
## OpenStack
|
||||
이 섹션에서는 쿠버네티스와 함께 OpenStack을 사용할 때 사용할 수 있는
|
||||
모든 구성에 대해 설명한다.
|
||||
|
||||
이 외부 클라우드 제공자를 사용하려는 경우, 해당 리포지터리는 [kubernetes/cloud-provider-openstack](https://github.com/kubernetes/cloud-provider-openstack#readme)이다.
|
||||
|
||||
### 노드 이름
|
||||
|
||||
OpenStack 클라우드 제공자는 (OpenStack 메타데이터에서 결정한) 인스턴스 이름을 쿠버네티스 노드 오브젝트의 이름으로 사용한다.
|
||||
참고로 kubelet이 노드 오브젝트를 성공적으로 등록하려면 인스턴스 이름이 유효한 쿠버네티스 노드 이름이어야 한다.
|
||||
|
||||
### 서비스
|
||||
|
||||
쿠버네티스에 대한
|
||||
OpenStack 클라우드 제공자 구현은 사용 가능한 경우 기본 클라우드에서
|
||||
이러한 OpenStack 서비스 사용을 지원한다.
|
||||
|
||||
| 서비스 | API 버전 | 필수 |
|
||||
|--------------------------|----------------|----------|
|
||||
| 블록 스토리지 (Cinder) | V1†, V2, V3 | 아니오 |
|
||||
| 컴퓨트 (Nova) | V2 | 아니오 |
|
||||
| 아이덴티티(Identity) (Keystone) | V2‡, V3 | 예 |
|
||||
| 로드 밸런싱 (Neutron) | V1§, V2 | 아니오 |
|
||||
| 로드 밸런싱 (Octavia) | V2 | 아니오 |
|
||||
|
||||
† 블록 스토리지 V1 API 지원은 사용 중단(deprecated)되며, 쿠버네티스 1.9에서 블록 스토리지
|
||||
V3 API 지원이 추가되었다.
|
||||
|
||||
‡ 아이덴티티 V2 API 지원은 사용 중단되며, 향후 릴리스에서는 제공자에서
|
||||
제거될 예정이다. "Queens" 릴리스부터 OpenStack은 더 이상 아이덴티티 V2 API를
|
||||
공개하지 않는다.
|
||||
|
||||
§ 로드 밸런싱 V1 API 지원이 쿠버네티스 1.9에서 제거되었다.
|
||||
|
||||
서비스 디스커버리는 제공자 구성에서 제공된 `auth-url` 을 사용하여
|
||||
OpenStack 아이덴티티(Keystone)에서 관리하는 서비스 카탈로그를
|
||||
나열하여 수행된다. Keystone 이외의 OpenStack 서비스를 사용할 수 없고
|
||||
영향을 받는 기능에 대한 지원을 거부할 경우 제공자는 기능이
|
||||
점진적으로 떨어진다. 기본 클라우드에서 Neutron이 게시한 확장 목록을 기반으로
|
||||
특정 기능을 활성화하거나 비활성화할 수도 있다.
|
||||
|
||||
### cloud.conf
|
||||
쿠버네티스는 cloud.conf 파일을 통해 OpenStack과 상호 작용하는 방법을 알고 있다. 쿠버네티스에
|
||||
OpenStack 인증 엔드포인트의 자격 증명과 위치를 제공하는 파일이다.
|
||||
다음의 세부 정보를 지정하여 cloud.conf 파일을 만들 수 있다.
|
||||
|
||||
#### 일반적인 구성
|
||||
이것은 가장 자주 설정해야 하는 값에 대한 일반적인 구성의
|
||||
예시이다. OpenStack 클라우드의 Keystone
|
||||
엔드포인트에서, 제공자를 가리키고 이를 인증하는 방법에 대한 세부 사항을 제공하고,
|
||||
로드 밸런서를 구성한다.
|
||||
|
||||
```yaml
|
||||
[Global]
|
||||
username=user
|
||||
password=pass
|
||||
auth-url=https://<keystone_ip>/identity/v3
|
||||
tenant-id=c869168a828847f39f7f06edd7305637
|
||||
domain-id=2a73b8f597c04551a0fdc8e95544be8a
|
||||
|
||||
[LoadBalancer]
|
||||
subnet-id=6937f8fa-858d-4bc9-a3a5-18d2c957166a
|
||||
```
|
||||
|
||||
##### 글로벌
|
||||
OpenStack 제공자에 대한 다음의 구성 옵션은 글로벌
|
||||
구성과 관련이 있으며 `cloud.conf` 파일의 `[Global]` 섹션에 있어야
|
||||
한다.
|
||||
|
||||
* `auth-url` (필수): 인증에 사용되는 Keystone API의 URL이다.
|
||||
OpenStack 제어판의 액세스 및 보안 > API 액세스 >
|
||||
자격 증명에서 찾을 수 있다.
|
||||
* `username` (필수): Keystone에 설정된 유효한 사용자의 username을 나타낸다.
|
||||
* `password` (필수): Keystone에 설정된 유효한 사용자의 password를 나타낸다.
|
||||
* `tenant-id` (필수): 리소스를 생성하려는 프로젝트의 id를 지정하는 데
|
||||
사용된다.
|
||||
* `tenant-name` (선택): 리소스를 생성하려는 프로젝트의 이름을
|
||||
지정하는 데 사용된다.
|
||||
* `trust-id` (선택): 권한 부여에 사용할 트러스트(trust)의 식별자를 지정하는 데
|
||||
사용된다. 트러스트는 한 사용자(트러스터(trustor))의 권한을 다른 사용자(트러스티(trustee))에게 역할을
|
||||
위임하고, 선택적으로 트러스티가 트러스터를 가장하도록
|
||||
허용한다. 사용 가능한 트러스트는
|
||||
Keystone API의 `/v3/OS-TRUST/trusts` 엔드포인트 아래에 있다.
|
||||
* `domain-id` (선택): 사용자가 속한 도메인의 id를 지정하는 데
|
||||
사용된다.
|
||||
* `domain-name` (선택): 사용자가 속한 도메인의 이름을 지정하는 데
|
||||
사용된다.
|
||||
* `region` (선택): 멀티-리전(multi-region) OpenStack 클라우드에서
|
||||
실행할 때 사용할 리전의 식별자를 지정하는 데 사용된다. 리전은 OpenStack 디플로이먼트의
|
||||
일반 디비전(division)이다. 리전에 엄격한 지리적 의미는 없지만,
|
||||
디플로이먼트 시 `us-east` 와 같은
|
||||
리전의 식별자에 지리적 이름을 사용할 수 있다. 사용 가능한 지역은
|
||||
Keystone API의 `/v3/regions` 엔드포인트 아래에 있다.
|
||||
* `ca-file` (선택): 사용자 지정 CA 파일의 경로를 지정하는 데 사용된다.
|
||||
|
||||
|
||||
테넌트를 프로젝트로 변경하는 Keystone V3을 사용하면 `tenant-id` 값이
|
||||
API의 프로젝트 구성에 자동으로 매핑된다.
|
||||
|
||||
##### 로드 밸런서
|
||||
OpenStack 제공자에 대한 다음의 구성 옵션은 로드 밸런서와 관련이 있으며
|
||||
`cloud.conf` 파일의 `[LoadBalancer]` 섹션에 있어야
|
||||
한다.
|
||||
|
||||
* `lb-version` (선택): 자동 버전 감지를 대체하는 데 사용된다. 유효한
|
||||
값은 `v1` 또는 `v2` 이다. 값이 제공되지 않는 경우 자동 감지는
|
||||
기본 OpenStack 클라우드에 의해 제공되는 가장 최신의 지원되는 버전을
|
||||
선택한다.
|
||||
* `use-octavia` (선택): Octavia LBaaS V2 서비스 카탈로그 엔드포인트를 찾고 사용할지의
|
||||
여부를 결정하는 데 사용된다. 유효한 값은 `true` 또는 `false` 이다.
|
||||
`true` 가 지정되고 Octaiva LBaaS V2 항목을 찾을 수 없는 경우,
|
||||
제공자는 폴백(fall back)하고 대신 Neutron LBaaS V2 엔드포인트를 찾으려고
|
||||
시도한다. 기본값은 `false` 이다.
|
||||
* `subnet-id` (선택): 로드 밸런서를 생성하려는 서브넷의 id를
|
||||
지정하는 데 사용된다. Network > Networks 에서 찾을 수 있다. 해당
|
||||
네트워크를 클릭하여 서브넷을 가져온다.
|
||||
* `floating-network-id` (선택): 지정된 경우, 로드 밸런서에 대한 유동 IP를
|
||||
생성한다.
|
||||
* `lb-method` (선택): 로드 밸런서 풀(pool)의 멤버 간에 부하가
|
||||
분산되는 알고리즘을 지정하는 데 사용된다. 값은
|
||||
`ROUND_ROBIN`, `LEAST_CONNECTIONS` 또는 `SOURCE_IP` 가 될 수 있다. 지정되지
|
||||
않은 경우 기본 동작은 `ROUND_ROBIN` 이다.
|
||||
* `lb-provider` (선택): 로드 밸런서의 제공자를 지정하는 데 사용된다.
|
||||
지정하지 않으면, neutron에 구성된 기본 제공자 서비스가
|
||||
사용된다.
|
||||
* `create-monitor` (선택): Neutron 로드 밸런서에 대한 헬스 모니터를
|
||||
생성할지의 여부를 나타낸다. 유효한 값은 `true` 및 `false` 이다.
|
||||
기본값은 `false` 이다. `true` 가 지정되면 `monitor-delay`,
|
||||
`monitor-timeout` 및 `monitor-max-retries` 도 설정해야 한다.
|
||||
* `monitor-delay` (선택): 로드 밸런서의 멤버에게 프로브(probe)를
|
||||
보내는 간격의 시간이다. 유효한 시간 단위를 지정해야 한다. 유효한 시간 단위는 "ns", "us"(또는 "µs"), "ms", "s", "m", "h"이다.
|
||||
* `monitor-timeout` (선택): 모니터가 타임아웃 되기 전에 핑(ping) 응답을
|
||||
기다리는 최대 시간이다. 값은 지연 값보다 작아야
|
||||
한다. 유효한 시간 단위를 지정해야 한다. 유효한 시간 단위는 "ns", "us"(또는 "µs"), "ms", "s", "m", "h"이다.
|
||||
* `monitor-max-retries` (선택): 로드 밸런서 멤버의 상태를 INACTIVE로
|
||||
변경하기 전에 허용되는 핑 오류 수이다. 1에서 10 사이의
|
||||
숫자여야 한다.
|
||||
* `manage-security-groups` (선택): 로드 밸런서가 보안 그룹 규칙을
|
||||
자동으로 관리해야 하는지의 여부를 결정한다. 유효한 값은
|
||||
`true` 및 `false` 이다. 기본값은 `false` 이다. `true` 가 지정되면
|
||||
`node-security-group` 도 제공해야 한다.
|
||||
* `node-security-group` (선택): 관리할 보안 그룹의 ID이다.
|
||||
|
||||
##### 블록 스토리지
|
||||
OpenStack 제공자에 대한 다음의 구성 옵션은 블록 스토리지와 관련이 있으며
|
||||
`cloud.conf` 파일의 `[BlockStorage]` 섹션에 있어야 한다.
|
||||
|
||||
* `bs-version` (선택): 자동 버전 감지를 대체하는 데 사용된다. 유효한
|
||||
값은 `v1`, `v2`, `v3` 및 `auto` 이다. `auto` 가 지정되면 자동
|
||||
감지는 기본 OpenStack 클라우드에 의해 노출되는 가장 최신의 지원되는
|
||||
버전을 선택한다. 제공되지 않은 경우 기본값은 `auto` 이다.
|
||||
* `trust-device-path` (선택): 대부분의 시나리오에서 Cinder가 제공한
|
||||
블록 장치 이름(예: `/dev/vda`)을 신뢰할 수 없다. 이 부울은
|
||||
이 동작을 토글(toggle)한다. 이를 `true` 로 설정하면 Cinder에서 제공한
|
||||
블록 장치 이름을 신뢰하게 된다. 기본값인 `false` 는 일련 번호와
|
||||
`/dev/disk/by-id` 를 매핑하여 장치 경로를 검색하게 하며
|
||||
권장하는 방법이다.
|
||||
* `ignore-volume-az` (선택): Cinder 볼륨을 연결할 때 가용 영역(availability zone)
|
||||
사용에 영향을 주기 위해 사용된다. Nova와 Cinder의 가용성
|
||||
영역이 서로 다른 경우, 이 값을 `true` 로 설정해야 한다. 이는 가장 일반적인 상황으로 Nova 가용 영역은
|
||||
많지만 Cinder는 하나의 가용 영역만 있는 경우이다.
|
||||
이전 릴리스에서 사용된 동작을 유지하기 위해 기본값은 `false`
|
||||
이지만, 나중에 변경될 수 있다.
|
||||
* `node-volume-attach-limit` (선택): 노드에 연결할 수 있는
|
||||
최대 볼륨 수이다. 기본값은 cinder의 경우 256이다.
|
||||
|
||||
포트가 아닌 경로를 사용하여 엔드포인트를 구별하는 OpenStack
|
||||
디플로이먼트에서 1.8 이하의 쿠버네티스 버전을 배포하는 경우
|
||||
명시적으로 `bs-version` 파라미터를 설정해야 한다. 경로 기반의 엔드포인트는
|
||||
`http://foo.bar/volume` 형식이며 포트 기반의 엔드포인트는
|
||||
`http://foo.bar:xxx` 형식이다.
|
||||
|
||||
경로 기반의 엔드포인트를 사용하고 쿠버네티스가 이전 자동 감지 로직을 사용하는 환경에서는
|
||||
볼륨 분리 시도 시 `BS API version autodetection failed.` 오류가
|
||||
리턴된다. 이 문제를 해결하려면 클라우드 제공자 구성에
|
||||
다음을 추가하여 Cinder API 버전 2를 강제로
|
||||
사용할 수 있다.
|
||||
|
||||
```yaml
|
||||
[BlockStorage]
|
||||
bs-version=v2
|
||||
```
|
||||
|
||||
##### 메타데이터
|
||||
OpenStack 제공자에 대한 다음의 구성 옵션은 메타데이터와 관련이 있으며
|
||||
`cloud.conf` 파일의 `[Metadata]` 섹션에 있어야 한다.
|
||||
|
||||
* `search-order` (선택): 이 구성 키는 실행되는 인스턴스와
|
||||
관련된 메타데이터를 제공자가 검색하는 방식에 영향을 준다. 기본값인
|
||||
`configDrive,metadataService` 를 사용할 수 있는 경우에 제공자가
|
||||
먼저 구성 드라이브에서 인스턴스와 관련된 메타데이터를
|
||||
검색한 다음 메타데이터 서비스를 검색하게 한다. 대체할 수 있는 값은 다음과 같다.
|
||||
* `configDrive` - 구성 드라이브에서 인스턴스 메타데이터만
|
||||
검색한다.
|
||||
* `metadataService` - 메타데이터 서비스에서 인스턴스 메타데이터만
|
||||
검색한다.
|
||||
* `metadataService,configDrive` - 사용할 수 있는 경우 먼저 메타데이터
|
||||
서비스에서 인스턴스 메타데이터를 검색한 다음, 구성 드라이브를 검색한다.
|
||||
|
||||
구성 드라이브의 메타데이터는 시간이 지남에 따라
|
||||
오래될 수 있지만, 메타데이터 서비스는 항상 최신 뷰를 제공하므로
|
||||
이러한 설정은 바람직하다. 모든 OpenStack 클라우드가
|
||||
구성 드라이브와 메타데이터 서비스를 모두 제공하는 것은 아니며 하나 또는 다른 하나만
|
||||
사용할 수 있으므로 기본값은 둘 다를 확인하는 것이다.
|
||||
|
||||
##### 라우트
|
||||
|
||||
OpenStack 제공자에 대한 다음의 구성 옵션은 [kubenet]
|
||||
쿠버네티스 네트워크 플러그인과 관련이 있으며 `cloud.conf` 파일의 `[Route]` 섹션에
|
||||
있어야 한다.
|
||||
|
||||
* `router-id` (선택): 기본 클라우드의 Neutron 디플로이먼트가
|
||||
`extraroutes` 확장을 지원하는 경우 경로를 추가할 라우터를 지정하는 데 `router-id`
|
||||
를 사용한다. 선택한 라우터는 클러스터 노드를 포함하는 프라이빗 네트워크에
|
||||
걸쳐 있어야 한다(일반적으로 하나의 노드 네트워크만 있으며, 이 값은
|
||||
노드 네트워크의 기본 라우터여야 한다). 이 값은 OpenStack에서 [kubenet]을 사용하는 데
|
||||
필요하다.
|
||||
|
||||
[kubenet]: /ko/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/#kubenet
|
||||
|
||||
{{% /capture %}}
|
||||
|
||||
## OVirt
|
||||
|
||||
### 노드 이름
|
||||
|
||||
OVirt 클라우드 제공자는 쿠버네티스 노드 오브젝트의 이름으로 노드의 (kubelet에 의해 결정되거나 `--hostname-override` 로 재정의된) 호스트 이름을 사용한다.
|
||||
참고로 쿠버네티스 노드 이름은 VM FQDN(Ovirt의 `<vm><guest_info><fqdn>...</fqdn></guest_info></vm>` 아래에서 보고된)과 일치해야 한다.
|
||||
|
||||
## Photon
|
||||
|
||||
### 노드 이름
|
||||
|
||||
Photon 클라우드 제공자는 쿠버네티스 노드 오브젝트의 이름으로 노드의 (kubelet에 의해 결정되거나 `--hostname-override` 로 재정의된) 호스트 이름을 사용한다.
|
||||
참고로 쿠버네티스 노드 이름은 Photon VM 이름(또는 `--cloud-config` 에서 `overrideIP` 가 true로 설정된 경우, 쿠버네티스 노드 이름은 Photon VM IP 주소와 일치해야 함)과 일치해야 한다.
|
||||
|
||||
## vSphere
|
||||
|
||||
{{< tabs name="vSphere cloud provider" >}}
|
||||
{{% tab name="vSphere 6.7U3 이상" %}}
|
||||
vSphere 6.7U3 이상의 모든 vSphere 디플로이먼트의 경우, [vSphere CSI 드라이버](https://github.com/kubernetes-sigs/vsphere-csi-driver)와 함께 [외부 vSphere 클라우드 제공자](https://github.com/kubernetes/cloud-provider-vsphere)를 권장한다. 퀵스타트 가이드는 [CSI와 CPI를 사용하여 vSphere에 쿠버네티스 클러스터 배포하기](https://cloud-provider-vsphere.sigs.k8s.io/tutorials/kubernetes-on-vsphere-with-kubeadm.html)를 참고한다.
|
||||
{{% /tab %}}
|
||||
{{% tab name="vSphere 6.7U3 미만" %}}
|
||||
vSphere 6.7U3 미만을 사용할 경우, 인-트리 vSphere 클라우드 제공자를 권장한다. 퀵스타트 가이드는 [kubeadm을 사용하여 vSphere에 쿠버네티스 클러스터 실행하기](https://cloud-provider-vsphere.sigs.k8s.io/tutorials/k8s-vcp-on-vsphere-with-kubeadm.html)를 참고한다.
|
||||
{{% /tab %}}
|
||||
{{< /tabs >}}
|
||||
|
||||
vSphere 클라우드 제공자에 대한 자세한 문서를 보려면, [vSphere 클라우드 제공자 문서 사이트](https://cloud-provider-vsphere.sigs.k8s.io)를 방문한다.
|
||||
|
||||
## IBM 클라우드 쿠버네티스 서비스
|
||||
|
||||
### 컴퓨트 노드
|
||||
IBM 클라우드 쿠버네티스 서비스 제공자를 사용하면, 단일 영역 또는 하나의 리전에서 여러 영역에 걸쳐 가상 노드와 물리(베어 메탈) 노드가 혼합된 클러스터를 생성할 수 있다. 자세한 정보는, [클러스터와 워커(worker) 노드 설정 계획](https://cloud.ibm.com/docs/containers?topic=containers-planning_worker_nodes)을 참고한다.
|
||||
|
||||
쿠버네티스 노드 오브젝트의 이름은 IBM 클라우드 쿠버네티스 서비스 워커 노드 인스턴스의 프라이빗 IP 주소이다.
|
||||
|
||||
### 네트워킹
|
||||
IBM 클라우드 쿠버네티스 서비스 제공자는 노드의 네트워크 성능 품질과 네트워크 격리를 위한 VLAN을 제공한다. 사용자 정의 방화벽 및 Calico 네트워크 폴리시를 설정하여 클러스터에 추가적인 보안 계층을 추가하거나 VPN을 통해 온-프레미스 데이터센터에 클러스터를 연결할 수 있다. 자세한 내용은 [인-클러스터(in-cluster) 및 프라이빗 네트워킹 계획](https://cloud.ibm.com/docs/containers?topic=containers-cs_network_cluster#cs_network_cluster)을 참고한다.
|
||||
|
||||
퍼블릭 또는 클러스터 내에서 앱을 노출하기 위해 노드포트(NodePort), 로드밸런서 또는 인그레스 서비스를 활용할 수 있다. 어노테이션을 사용하여 인그레스 애플리케이션 로드 밸런서를 커스터마이징 할 수도 있다. 자세한 내용은 [외부 네트워킹으로 앱 노출 계획](https://cloud.ibm.com/docs/containers?topic=containers-cs_network_planning#cs_network_planning)을 참고한다.
|
||||
|
||||
### 스토리지
|
||||
IBM 클라우드 쿠버네티스 서비스 제공자는 쿠버네티스-네이티브 퍼시스턴트 볼륨을 활용하여 사용자가 파일, 블록 및 클라우드 오브젝트 스토리지를 앱에 마운트할 수 있도록 한다. 데이터를 지속적으로 저장하기 위해 서비스로서의-데이터베이스(database-as-a-service)와 써드파티 애드온을 사용할 수도 있다. 자세한 정보는 [고가용성 퍼시스턴트 스토리지 계획](https://cloud.ibm.com/docs/containers?topic=containers-storage_planning#storage_planning)을 참고한다.
|
||||
|
||||
## Baidu 클라우드 컨테이너 엔진
|
||||
|
||||
### 노드 이름
|
||||
|
||||
Baidu 클라우드 제공자는 쿠버네티스 노드 오브젝트의 이름으로 노드의 (kubelet에 의해 결정되거나 `--hostname-override` 로 재정의된) 프라이빗 IP 주소를 사용한다.
|
||||
참고로 쿠버네티스 노드 이름은 Baidu VM 프라이빗 IP와 일치해야 한다.
|
||||
|
||||
## Tencent 쿠버네티스 엔진
|
||||
이 외부 클라우드 제공자를 사용하려는 경우, 해당 리포지터리는 [TencentCloud/tencentcloud-cloud-controller-manager](https://github.com/TencentCloud/tencentcloud-cloud-controller-manager)이다.
|
||||
|
||||
### 노드 이름
|
||||
|
||||
Tencent 클라우드 제공자는 쿠버네티스 노드 오브젝트의 이름으로 노드의 (kubelet에 의해 결정되거나 `--hostname-override` 로 재정의된) 호스트 이름을 사용한다.
|
||||
참고로 쿠버네티스 노드 이름은 Tencent VM 프라이빗 IP와 일치해야 한다.
|
||||
@@ -0,0 +1,317 @@
|
||||
---
|
||||
title: 클러스터 네트워킹
|
||||
content_template: templates/concept
|
||||
weight: 50
|
||||
---
|
||||
|
||||
{{% capture overview %}}
|
||||
네트워킹은 쿠버네티스의 중심적인 부분이지만, 어떻게 작동하는지 정확하게
|
||||
이해하기가 어려울 수 있다. 쿠버네티스에는 4가지 대응해야 할 네트워킹
|
||||
문제가 있다.
|
||||
|
||||
1. 고도로 결합된 컨테이너 간의 통신: 이 문제는
|
||||
[파드](/ko/docs/concepts/workloads/pods/pod/)와 `localhost` 통신으로 해결된다.
|
||||
2. 파드 간 통신: 이 문제가 이 문서의 주요 초점이다.
|
||||
3. 파드와 서비스 간 통신: 이 문제는 [서비스](/ko/docs/concepts/services-networking/service/)에서 다룬다.
|
||||
4. 외부와 서비스 간 통신: 이 문제는 [서비스](/ko/docs/concepts/services-networking/service/)에서 다룬다.
|
||||
|
||||
{{% /capture %}}
|
||||
|
||||
|
||||
{{% capture body %}}
|
||||
|
||||
쿠버네티스는 애플리케이션 간에 머신을 공유하는 것이다. 일반적으로,
|
||||
머신을 공유하려면 두 애플리케이션이 동일한 포트를 사용하지 않도록
|
||||
해야 한다. 여러 개발자 간에 포트를 조정하는 것은 대규모로 실시하기가 매우 어렵고,
|
||||
사용자가 통제할 수 없는 클러스터 수준의 문제에 노출된다.
|
||||
|
||||
동적 포트 할당은 시스템에 많은 복잡성을 야기한다. 모든
|
||||
애플리케이션은 포트를 플래그로 가져와야 하며, API 서버는 동적 포트 번호를
|
||||
구성 블록에 삽입하는 방법을 알아야 하고, 서비스는 서로를
|
||||
찾는 방법 등을 알아야 한다. 쿠버네티스는 이런 것들을 다루는 대신
|
||||
다른 접근법을 취한다.
|
||||
|
||||
## 쿠버네티스 네트워크 모델
|
||||
|
||||
모든 `Pod` 에는 고유의 IP 주소가 있다. 즉, `Pod` 간에 링크를 명시적으로
|
||||
생성할 필요가 없으며 컨테이너 포트를 호스트 포트에 매핑할
|
||||
필요가 거의 없다. 이렇게 하면 포트 할당, 이름 지정, 서비스 검색, 로드 밸런싱,
|
||||
애플리케이션 구성 및 마이그레이션 관점에서 `Pod` 를 VM 또는
|
||||
물리적 호스트처럼 취급할 수 있는 깔끔하고, 하위 호환성
|
||||
있는 모델이 생성된다.
|
||||
|
||||
쿠버네티스는 모든 네트워크 구현에 다음과 같은
|
||||
기본 요구 사항을 적용한다(의도적 네트워크 세분화 정책 제외).
|
||||
|
||||
* 노드의 파드는 NAT 없이 모든 노드의 모든 파드와 통신할 수 있다.
|
||||
* 노드의 에이전트(예: 시스템 데몬, kubelet)는 해당 노드의 모든
|
||||
파드와 통신할 수 있다.
|
||||
|
||||
참고: 호스트 네트워크에서 실행되는 `Pod` 를 지원하는 리눅스와 같은 플랫폼의 경우, 다음의 요구 사항을
|
||||
적용한다.
|
||||
|
||||
* 노드의 호스트 네트워크에 있는 파드는 NAT 없이 모든 노드에 있는 모든
|
||||
파드와 통신할 수 있다.
|
||||
|
||||
이 모델은 전체적으로 덜 복잡할 뿐만 아니라, 쿠버네티스를 위해 VM에서
|
||||
컨테이너로 애플리케이션을 포팅할 때 충돌이 적게 구현하려는 요구와
|
||||
주로 호환된다. 잡이 이전에 VM에서 실행된 경우, VM에 IP가 있고
|
||||
프로젝트의 다른 VM과 통신할 수 있다. 이것은 동일한 기본 모델이다.
|
||||
|
||||
쿠버네티스의 IP 주소는 그것의 IP 주소를 포함하여 `Pod` 범위에 존재한다(`Pod` 내
|
||||
컨테이너는 네트워크 네임스페이스를 공유함). 이것은 `Pod` 내 컨테이너가 모두
|
||||
`localhost` 에서 서로의 포트에 도달할 수 있다는 것을 의미한다. 또한
|
||||
`Pod` 내부의 컨테이너 포트의 사용을 조정해야하는 것을 의미하지만, 이것도
|
||||
VM 내의 프로세스와 동일하다. 이것을 "IP-per-pod(파드별 IP)" 모델이라고 한다.
|
||||
|
||||
이것이 어떻게 구현되는 지는 사용 중인 특정 컨테이너 런타임의 세부 사항이다.
|
||||
|
||||
`Pod` 로 전달하는 `Node` 자체의 포트(호스트 포트라고 함)를
|
||||
요청할 수 있지만, 이는 매우 틈새 작업이다. 전달이 구현되는 방법은
|
||||
컨테이너 런타임의 세부 사항이기도 하다. `Pod` 자체는
|
||||
호스트 포트의 존재 여부에 대해 인식하지 못한다.
|
||||
|
||||
## 쿠버네티스 네트워크 모델의 구현 방법
|
||||
|
||||
이 네트워크 모델을 구현할 수 있는 방법에는 여러 가지가 있다. 이
|
||||
문서는 다양한 방법에 대한 철저한 연구는 아니지만, 다양한 기술에 대한
|
||||
소개로 활용되며 도약하는 포인트로 사용되기를 바란다.
|
||||
|
||||
이 목록은 알파벳 순으로 정렬되어 있으며, 정렬된 순서가
|
||||
우선 상태를 의미하는 것은 아니다.
|
||||
|
||||
### ACI
|
||||
|
||||
[Cisco 애플리케이션 센트릭 인프라스트럭처(Application Centric Infrastructure)](https://www.cisco.com/c/en/us/solutions/data-center-virtualization/application-centric-infrastructure/index.html)는 컨테이너, 가상 머신 및 베어메탈 서버를 지원하는 통합 오버레이 및 언더레이 SDN 솔루션을 제공한다. [ACI](https://www.github.com/noironetworks/aci-containers)는 ACI를 위한 컨테이너 네트워킹 통합을 제공한다. 통합의 개요는 [여기](https://www.cisco.com/c/dam/en/us/solutions/collateral/data-center-virtualization/application-centric-infrastructure/solution-overview-c22-739493.pdf)에서 제공된다.
|
||||
|
||||
### Antrea
|
||||
|
||||
프로젝트 [Antrea](https://github.com/vmware-tanzu/antrea)는 쿠버네티스 고유의 오픈소스 쿠버네티스 네트워킹 솔루션이다. 네트워킹 데이터 플레인으로 Open vSwitch를 활용한다. Open vSwitch는 리눅스와 윈도우를 모두 지원하는 고성능의 프로그래밍이 가능한 가상 스위치이다. Antrea는 Open vSwitch를 통해 쿠버네티스 네트워크 정책을 고성능의 효율적인 방식으로 구현할 수 있다.
|
||||
Antrea는 Open vSwitch의 "프로그래밍이 가능한" 특성으로 인해 Open vSwitch 위에 광범위한 네트워킹 및 보안 기능과 서비스를 구현할 수 있다.
|
||||
|
||||
### Apstra의 AOS
|
||||
|
||||
[AOS](http://www.apstra.com/products/aos/)는 단순한 통합 플랫폼에서 복잡한 데이터센터 환경을 만들고 관리하는 의도기반(Intent-Based) 네트워킹 시스템이다. AOS는 확장성이 뛰어난 분산 설계를 활용하여 네트워크 중단을 제거하면서 비용을 최소화한다.
|
||||
|
||||
AOS 레퍼런스 디자인은 현재 레거시 Layer-2 스위칭 문제를 제거하는 Layer-3 연결 호스트를 지원한다. 이 Layer-3 호스트는 리눅스 서버(Debian, Ubuntu, CentOS)일 수 있으며 랙 상단 스위치(TOR)와 직접 BGP 인접 관계를 만든다. AOS는 라우팅 인접성을 자동화한 다음 쿠버네티스 디플로이먼트에서 일반적으로 사용되는 RHI(Route Health Injection)에 대한 세밀한 제어를 제공한다.
|
||||
|
||||
AOS는 쿠버네티스가 애플리케이션 요구 사항에 따라 네트워크 정책을 신속하게 변경할 수 있는 풍부한 REST API 엔드포인트 셋을 제공한다. 네트워크 설계에 사용된 AOS 그래프 모델을 워크로드 프로비저닝과 통합하여 프라이빗 클라우드와 퍼블릭 클라우드 모두에 대한 엔드-투-엔드 관리 시스템을 향상시킬 수 있다.
|
||||
|
||||
AOS는 Cisco, Arista, Dell, Mellanox, HPE 그리고 Microsoft SONiC, Dell OPX 및 Cumulus Linux와 같은 개방형 네트워크 운영체제와 수많은 화이트-박스 시스템을 포함한 제조업체의 일반적인 벤더 장비 사용을 지원한다.
|
||||
|
||||
AOS 시스템 작동 방식에 대한 자세한 내용은 다음을 참고한다. http://www.apstra.com/products/how-it-works/
|
||||
|
||||
### 쿠버네티스용 AWS VPC CNI
|
||||
|
||||
[AWS VPC CNI](https://github.com/aws/amazon-vpc-cni-k8s)는 쿠버네티스 클러스터를 위한 통합된 AWS 버추얼 프라이빗 클라우드(Virtual Private Cloud, VPC) 네트워킹을 제공한다. 이 CNI 플러그인은 높은 처리량과 가용성, 낮은 레이턴시(latency) 그리고 최소 네트워크 지터(jitter)를 제공한다. 또한, 사용자는 쿠버네티스 클러스터를 구축하기 위한 기존의 AWS VPC 네트워킹 및 보안 모범 사례를 적용할 수 있다. 여기에는 VPC 플로우 로그, VPC 라우팅 정책과 네트워크 트래픽 격리를 위한 보안 그룹을 사용하는 기능이 포함되어 있다.
|
||||
|
||||
이 CNI 플러그인을 사용하면 쿠버네티스 파드는 VPC 네트워크와 동일한 IP 주소를 파드 내부에 가질 수 있다. CNI는 각 쿠버네티스 노드에 AWS 엘라스틱 네트워킹 인터페이스(Elastic Networking Interfaces, ENI)를 할당하고 노드의 파드에 대해 각 ENI의 보조 IP 범위를 사용한다. CNI에는 파드를 빠르게 시작하기 위해 ENI와 IP 주소의 사전 할당 제어 기능이 포함되어 있으며 최대 2,000개의 노드로 구성된 대규모 클러스터가 가능하다.
|
||||
|
||||
또한, CNI는 [네트워크 폴리시 적용을 위해 캘리코(Calico)](https://docs.aws.amazon.com/eks/latest/userguide/calico.html)와 함께 실행할 수 있다. AWS VPC CNI 프로젝트는 [GitHub의 문서](https://github.com/aws/amazon-vpc-cni-k8s)와 함께 오픈소스로 공개되어 있다.
|
||||
|
||||
### 쿠버네티스용 Azure CNI
|
||||
[Azure CNI](https://docs.microsoft.com/en-us/azure/virtual-network/container-networking-overview)는 VM과 동등한 네트워크 성능을 제공하는 Azure 버추얼 네트워크(VNet이라고도 알려진)와 쿠버네티스 파드를 통합하는 [오픈소스](https://github.com/Azure/azure-container-networking/blob/master/docs/cni.md) 플러그인이다. 파드는 피어링된 VNet과 Express Route 또는 사이트 간 VPN을 통해 온-프레미스에 연결할 수 있으며 이러한 네트워크에서 직접 연결할 수도 있다. 파드는 서비스 엔드포인트 또는 프라이빗 링크로 보호되는 스토리지와 SQL과 같은 Azure 서비스에 접근할 수 있다. VNet 보안 정책과 라우팅을 사용하여 파드 트래픽을 필터링할 수 있다. 플러그인은 쿠버네티스 노드의 네트워크 인터페이스에 사전 구성된 보조 IP 풀을 활용하여 VNet IP를 파드에 할당한다.
|
||||
|
||||
Azure CNI는 [Azure 쿠버네티스 서비스(Azure Kubernetes Service, AKS)](https://docs.microsoft.com/en-us/azure/aks/configure-azure-cni)에서 기본적으로 사용할 수 있다.
|
||||
|
||||
|
||||
### Big Switch Networks의 빅 클라우드 패브릭(Big Cloud Fabric)
|
||||
|
||||
[빅 클라우드 패브릭](https://www.bigswitch.com/container-network-automation)은 클라우드 네이티브 네트워킹 아키텍처로, 프라이빗 클라우드/온-프레미스 환경에서 쿠버네티스를 실행하도록 디자인되었다. 통합된 물리 및 가상 SDN을 사용하여, 빅 클라우드 패브릭은 로드 밸런싱, 가시성, 문제 해결, 보안 정책 및 컨테이너 트래픽 모니터링과 같은 내재한 컨테이너 네트워킹 문제를 해결한다.
|
||||
|
||||
빅 클라우드 패브릭의 가상 파드 멀티 테넌트 아키텍처를 통해 쿠버네티스, RedHat OpenShift, Mesosphere DC/OS 및 Docker Swarm과 같은 컨테이너 오케스트레이션 시스템은 VMware, OpenStack 및 Nutanix와 같은 VM 오케스트레이션 시스템과 함께 네이티브로 통합된다. 고객은 원하는 수의 클러스터를 안전하게 상호 연결할 수 있으며 필요한 경우 이들 사이의 테넌트 간 통신을 활성화할 수 있다.
|
||||
|
||||
가트너는 최신의 [매직 쿼드런트(Magic Quadrant)](http://go.bigswitch.com/17GatedDocuments-MagicQuadrantforDataCenterNetworking_Reg.html)에서 BCF를 비저너리(Visionary)로 인정했다. BCF 쿠버네티스 온-프레미스 디플로이먼트 중 하나(지리적으로 다른 리전에 걸쳐 여러 DC에서 실행되는 쿠버네티스, DC/OS 및 VMware 포함)도 [여기](https://portworx.com/architects-corner-kubernetes-satya-komala-nio/)에서 사례로 참조된다.
|
||||
|
||||
### 실리움(Cilium)
|
||||
|
||||
[실리움](https://github.com/cilium/cilium)은 애플리케이션 컨테이너 간에
|
||||
네트워크 연결을 제공하고 투명하게 보호하기 위한 오픈소스 소프트웨어이다.
|
||||
실리움은 L7/HTTP를 인식하며 네트워크 주소 지정에서 분리된 ID 기반 보안 모델을 사용하여 L3-L7에서
|
||||
네트워크 정책을 적용할 수 있으며,
|
||||
다른 CNI 플러그인과 함께 사용할 수 있다.
|
||||
|
||||
### 화웨이의 CNI-Genie
|
||||
|
||||
[CNI-Genie](https://github.com/Huawei-PaaS/CNI-Genie)는 쿠버네티스가 런타임 시 [쿠버네티스 네트워크 모델](https://github.com/kubernetes/website/blob/master/content/en/docs/concepts/cluster-administration/networking.md#the-kubernetes-network-model)의 [서로 다른 구현에 동시에 접근](https://github.com/Huawei-PaaS/CNI-Genie/blob/master/docs/multiple-cni-plugins/README.md#what-cni-genie-feature-1-multiple-cni-plugins-enables)할 수 있는 CNI 플러그인이다. 여기에는 [플라넬(Flannel)](https://github.com/coreos/flannel#flannel), [캘리코](http://docs.projectcalico.org/), [로마나(Romana)](http://romana.io), [위브넷(Weave-net)](https://www.weave.works/products/weave-net/)과 같은 [CNI 플러그인](https://github.com/containernetworking/cni#3rd-party-plugins)으로 실행되는 모든 구현이 포함된다.
|
||||
|
||||
CNI-Genie는 각각 다른 CNI 플러그인에서 [하나의 파드에 여러 IP 주소를 할당](https://github.com/Huawei-PaaS/CNI-Genie/blob/master/docs/multiple-ips/README.md#feature-2-extension-cni-genie-multiple-ip-addresses-per-pod)하는 것도 지원한다.
|
||||
|
||||
### cni-ipvlan-vpc-k8s
|
||||
[cni-ipvlan-vpc-k8s](https://github.com/lyft/cni-ipvlan-vpc-k8s)는
|
||||
L2 모드에서 리눅스 커널의 IPvlan 드라이버를 사용하여 Amazon 엘라스틱 네트워크 인터페이스(ENI)를
|
||||
사용하고 AWS 매니지드 IP를 파드에 바인딩하는
|
||||
Amazon 버추얼 프라이빗 클라우드(VPC) 환경 내에서 쿠버네티스를 위한
|
||||
간단하고, 호스트 로컬, 낮은 레이턴시, 높은 처리량 및 호환 네트워킹 스택을 제공하는
|
||||
CNI와 IPAM 플러그인 셋을 포함한다.
|
||||
|
||||
플러그인은 VPC 내에서 구성하고 배포할 수 있도록 간단하게 설계되었다.
|
||||
Kubelets는 오버레이 네트워크 관리, BGP 관리, 소스/대상 확인 비활성화 또는
|
||||
VPC 라우팅 테이블을 조정하여 각 호스트에 인스턴스별 서브넷을
|
||||
제공(VPC별 50-100개 항목으로 제한)하는 등의 자주 권장되는 복잡성을 요구하지 않고
|
||||
부팅한 다음 필요에 따라 IP 사용량을 자체 구성하고 확장할
|
||||
수 있다. 즉, cni-ipvlan-vpc-k8s는 AWS 내에서 쿠버네티스를
|
||||
대규모로 배포하는 데 필요한 네트워크 복잡성을 크게 줄인다.
|
||||
|
||||
### 콘티브(Contiv)
|
||||
|
||||
[콘티브](https://github.com/contiv/netplugin)는 다양한 적용 사례에서 구성 가능한 네트워킹(BGP를 사용하는 네이티브 L3, vxlan을 사용하는 오버레이, 클래식 L2 또는 Cisco-SDN/ACI)을 제공한다. [콘티브](http://contiv.io)는 모두 오픈소스이다.
|
||||
|
||||
### 콘트레일(Contrail) / 텅스텐 패브릭(Tungsten Fabric)
|
||||
|
||||
[텅스텐 패브릭](https://tungsten.io)을 기반으로 하는 [콘트레일](http://www.juniper.net/us/en/products-services/sdn/contrail/contrail-networking/)은 진정한 개방형 멀티 클라우드 네트워크 가상화 및 정책 관리 플랫폼이다. 콘트레일 및 텅스텐 패브릭은 쿠버네티스, OpenShift, OpenStack 및 Mesos와 같은 다양한 오케스트레이션 시스템과 통합되어 있으며, 가상 머신, 컨테이너/파드 및 베어메탈 워크로드에 대해 서로 다른 격리 모드를 제공한다.
|
||||
|
||||
### DANM
|
||||
|
||||
[DANM](https://github.com/nokia/danm)은 쿠버네티스 클러스터에서 실행되는 통신사 워크로드를 위한 네트워킹 솔루션이다. 다음의 컴포넌트로 구성된다.
|
||||
|
||||
* 고급 기능들로 IPVLAN 인터페이스를 프로비저닝할 수 있는 CNI 플러그인
|
||||
* 여러 클러스터 전체의 불연속 L3 네트워크를 관리하고 요청 시 동적, 정적 또는 IP를 할당하지 않는 방식을 제공하는 내장 IPAM 모듈
|
||||
* 자체 CNI를 통해서, 또는 SRI-OV나 플라넬과 같은 널리 사용되는 CNI 솔루션에 잡을 동시에 위임하여 여러 네트워크 인터페이스를 컨테이너에 연결할 수 있는 CNI 메타플러그인
|
||||
* 모든 쿠버네티스 호스트의 VxLAN 및 VLAN 인터페이스를 중앙에서 관리할 수 있는 쿠버네티스 컨트롤러
|
||||
* 쿠버네티스의 서비스 기반의 서비스 검색 개념을 확장하여 파드의 모든 네트워크 인터페이스에서 작동하는 다른 쿠버네티스 컨트롤러
|
||||
|
||||
이 도구 셋을 통해 DANM은 여러 개의 분리된 네트워크 인터페이스를 제공할 수 있으며, 파드에 다른 네트워킹 백엔드 및 고급 IPAM 기능을 사용할 수 있다.
|
||||
|
||||
### 플라넬
|
||||
|
||||
[플라넬](https://github.com/coreos/flannel#flannel)은 쿠버네티스 요구 사항을
|
||||
충족하는 매우 간단한 오버레이 네트워크이다. 많은
|
||||
경우에 쿠버네티스와 플라넬은 성공적으로 적용이 가능하다.
|
||||
|
||||
### Google 컴퓨트 엔진(GCE)
|
||||
|
||||
Google 컴퓨트 엔진 클러스터 구성 스크립트의 경우, [고급
|
||||
라우팅](https://cloud.google.com/vpc/docs/routes)을 사용하여
|
||||
각 VM에 서브넷을 할당한다(기본값은 `/24` - 254개 IP). 해당 서브넷에 바인딩된
|
||||
모든 트래픽은 GCE 네트워크 패브릭에 의해 VM으로 직접 라우팅된다. 이는
|
||||
아웃 바운드 인터넷 접근을 위해 NAT로 구성된 VM에 할당된 "기본"
|
||||
IP 주소에 추가된다. 리눅스 브릿지(`cbr0`)는 해당 서브넷에 존재하도록
|
||||
구성되며, 도커의 `--bridge` 플래그로 전달된다.
|
||||
|
||||
도커는 다음의 설정으로 시작한다.
|
||||
|
||||
```shell
|
||||
DOCKER_OPTS="--bridge=cbr0 --iptables=false --ip-masq=false"
|
||||
```
|
||||
|
||||
이 브릿지는 노드의 `.spec.podCIDR`에 따라 Kubelet(`--network-plugin=kubenet`
|
||||
플래그로 제어되는)에 의해 생성된다.
|
||||
|
||||
도커는 이제 `cbr-cidr` 블록에서 IP를 할당한다. 컨테이너는 `cbr0` 브릿지를
|
||||
통해 서로 `Node` 에 도달할 수 있다. 이러한 IP는 모두 GCE 프로젝트 네트워크
|
||||
내에서 라우팅할 수 있다.
|
||||
|
||||
그러나, GCE 자체는 이러한 IP에 대해 전혀 알지 못하므로, 아웃 바운드 인터넷 트래픽을 위해
|
||||
IP를 NAT하지 않는다. 그것을 달성하기 위해 iptables 규칙을 사용하여
|
||||
GCE 프로젝트 네트워크(10.0.0.0/8) 외부의 IP에 바인딩된 트래픽을
|
||||
마스커레이드(일명 SNAT - 마치 패킷이 `Node` 자체에서 온 것처럼
|
||||
보이게 함)한다.
|
||||
|
||||
```shell
|
||||
iptables -t nat -A POSTROUTING ! -d 10.0.0.0/8 -o eth0 -j MASQUERADE
|
||||
```
|
||||
|
||||
마지막으로 커널에서 IP 포워딩이 활성화되어 있으므로, 커널은 브릿지된 컨테이너에
|
||||
대한 패킷을 처리한다.
|
||||
|
||||
```shell
|
||||
sysctl net.ipv4.ip_forward=1
|
||||
```
|
||||
|
||||
이 모든 것의 결과는 모든 `Pod` 가 서로에게 도달할 수 있고 인터넷으로 트래픽을
|
||||
송신할 수 있다는 것이다.
|
||||
|
||||
### 재규어(Jaguar)
|
||||
|
||||
[재규어](https://gitlab.com/sdnlab/jaguar)는 OpenDaylight 기반의 쿠버네티스 네트워크를 위한 오픈소스 솔루션이다. 재규어는 vxlan을 사용하여 오버레이 네트워크를 제공하고 재규어 CNI 플러그인은 파드별로 하나의 IP 주소를 제공한다.
|
||||
|
||||
### k-vswitch
|
||||
|
||||
[k-vswitch](https://github.com/k-vswitch/k-vswitch)는 [Open vSwitch](https://www.openvswitch.org/) 기반의 간단한 쿠버네티스 네트워킹 플러그인이다. Open vSwitch의 기존 기능을 활용하여 운영하기 쉽고, 성능이 뛰어나고 안전한 강력한 네트워킹 플러그인을 제공한다.
|
||||
|
||||
### Knitter
|
||||
|
||||
[Knitter](https://github.com/ZTE/Knitter/)는 쿠버네티스에서 여러 네트워킹을 지원하는 네트워크 솔루션이다. 테넌트 관리 및 네트워크 관리 기능을 제공한다. Knitter에는 애플리케이션의 IP 주소 유지, IP 주소 마이그레이션 등과 같은 여러 네트워크 플레인 외에 엔드-투-엔드 NFV 컨테이너 네트워킹 솔루션 셋이 포함되어 있다.
|
||||
|
||||
### Kube-OVN
|
||||
|
||||
[Kube-OVN](https://github.com/alauda/kube-ovn)은 기업을 위한 OVN 기반 쿠버네티스 네트워크 패브릭이다. OVN/OVS의 도움으로, 서브넷, QoS, 고정 IP 할당, 트래픽 미러링, 게이트웨이, 오픈플로우 기반 네트워크 정책 및 서비스 프록시와 같은 고급 오버레이 네트워크 기능을 제공한다.
|
||||
|
||||
### Kube-router
|
||||
|
||||
[kube-router](https://github.com/cloudnativelabs/kube-router)는 쿠버네티스를 위한 특수 목적의 네트워킹 솔루션으로 고성능 및 운영 단순성을 제공한다. 큐브 라우터는 리눅스 [LVS/IPVS](http://www.linuxvirtualserver.org/software/ipvs.html) 기반 서비스 프록시, 오버레이가 없는 리눅스 커널 포워딩 기반의 파드 간 네트워킹 솔루션 그리고 iptables/ipset 기반 네트워크 정책 집행도구를 제공한다.
|
||||
|
||||
### L2 네트워크 및 리눅스 브릿지
|
||||
|
||||
"베어메탈" 환경의 간단한 스위치와 같은 "더미(dumb)" L2 네트워크가 있는 경우,
|
||||
위의 GCE 설정과 비슷한 작업을 수행할 수 있어야 한다.
|
||||
이 방법은 매우 우연히 시도되었고 작동하는 것으로 보이지만
|
||||
철저히 테스트되지 않았다. 이 기술을 사용하여
|
||||
프로세스를 완료한 경우, 알려주길 바란다.
|
||||
|
||||
Lars Kellogg-Stedman이 제공하는 [이 훌륭한
|
||||
튜토리얼](http://blog.oddbit.com/2014/08/11/four-ways-to-connect-a-docker/)의
|
||||
"With Linux Bridge devices" 섹션을 참고한다.
|
||||
|
||||
### Multus(멀티 네트워크 플러그인)
|
||||
|
||||
[Multus](https://github.com/Intel-Corp/multus-cni)는 쿠버네티스의 CRD 기반 네트워크 오브젝트를 사용하여 쿠버네티스에서 멀티 네트워킹 기능을 지원하는 멀티 CNI 플러그인이다.
|
||||
|
||||
Multus는 CNI 명세를 구현하는 모든 [레퍼런스 플러그인](https://github.com/containernetworking/plugins)(예: [플라넬](https://github.com/containernetworking/plugins/tree/master/plugins/meta/flannel), [DHCP](https://github.com/containernetworking/plugins/tree/master/plugins/ipam/dhcp), [Macvlan](https://github.com/containernetworking/plugins/tree/master/plugins/main/macvlan)) 및 써드파티 플러그인(예: [캘리코](https://github.com/projectcalico/cni-plugin), [위브(Weave)](https://github.com/weaveworks/weave), [실리움](https://github.com/cilium/cilium), [콘티브](https://github.com/contiv/netplugin))을 지원한다. 또한, Multus는 쿠버네티스의 클라우드 네이티브 애플리케이션과 NFV 기반 애플리케이션을 통해 쿠버네티스의 [SRIOV](https://github.com/hustcat/sriov-cni), [DPDK](https://github.com/Intel-Corp/sriov-cni), [OVS-DPDK 및 VPP](https://github.com/intel/vhost-user-net-plugin) 워크로드를 지원한다.
|
||||
|
||||
### NSX-T
|
||||
|
||||
[VMware NSX-T](https://docs.vmware.com/en/VMware-NSX-T/index.html)는 네트워크 가상화 및 보안 플랫폼이다. NSX-T는 멀티 클라우드 및 멀티 하이퍼바이저 환경에 네트워크 가상화를 제공할 수 있으며 이기종 엔드포인트와 기술 스택이 있는 새로운 애플리케이션 프레임워크 및 아키텍처에 중점을 둔다. vSphere 하이퍼바이저 외에도, 이러한 환경에는 KVM, 컨테이너 및 베어메탈과 같은 다른 하이퍼바이저가 포함된다.
|
||||
|
||||
[NSX-T 컨테이너 플러그인(NCP)](https://docs.vmware.com/en/VMware-NSX-T/2.0/nsxt_20_ncp_kubernetes.pdf)은 NSX-T와 쿠버네티스와 같은 컨테이너 오케스트레이터 사이의 통합은 물론, NSX-T와 Pivotal 컨테이너 서비스(PKS) 및 OpenShift와 같은 컨테이너 기반 CaaS/PaaS 플랫폼 간의 통합을 제공한다.
|
||||
|
||||
### Nuage Networks VCS(가상 클라우드 서비스)
|
||||
|
||||
[Nuage](http://www.nuagenetworks.net)는 확장성이 뛰어난 정책 기반의 소프트웨어 정의 네트워킹(SDN) 플랫폼을 제공한다. Nuage는 개방형 표준을 기반으로 구축된 풍부한 기능의 SDN 컨트롤러와 함께 데이터 플레인용 오픈소스 Open vSwitch를 사용한다.
|
||||
|
||||
Nuage 플랫폼은 오버레이를 사용하여 쿠버네티스 파드와 쿠버네티스가 아닌 환경(VM 및 베어메탈 서버) 간에 완벽한 정책 기반의 네트워킹을 제공한다. Nuage의 정책 추상화 모델은 애플리케이션을 염두에 두고 설계되었으며 애플리케이션에 대한 세분화된 정책을 쉽게 선언할 수 있도록 한다. 플랫폼의 실시간 분석 엔진을 통해 쿠버네티스 애플리케이션에 대한 가시성과 보안 모니터링이 가능하다.
|
||||
|
||||
### OpenVSwitch
|
||||
|
||||
[OpenVSwitch](https://www.openvswitch.org/)는 다소 성숙하지만
|
||||
오버레이 네트워크를 구축하는 복잡한 방법이다. 이것은 네트워킹 분야의 몇몇
|
||||
"대형 벤더"에 의해 승인되었다.
|
||||
|
||||
### OVN(오픈 버추얼 네트워킹)
|
||||
|
||||
OVN은 Open vSwitch 커뮤니티에서 개발한 오픈소스 네트워크
|
||||
가상화 솔루션이다. 논리적 스위치, 논리적 라우터, 스테이트풀 ACL, 로드 밸런서 등을 생성하여
|
||||
서로 다른 가상 네트워킹 토폴로지를 구축할 수 있다. 이 프로젝트에는
|
||||
[ovn-kubernetes](https://github.com/openvswitch/ovn-kubernetes)에
|
||||
특정 쿠버네티스 플러그인 및 문서가 있다.
|
||||
|
||||
### 프로젝트 캘리코
|
||||
|
||||
[프로젝트 캘리코](http://docs.projectcalico.org/)는 오픈소스 컨테이너 네트워킹 공급자 및 네트워크 정책 엔진이다.
|
||||
|
||||
캘리코는 리눅스(오픈소스)와 윈도우(독점 - [Tigera](https://www.tigera.io/essentials/)에서 사용 가능) 모두에서 인터넷과 동일한 IP 네트워킹 원칙을 기반으로 쿠버네티스 파드를 연결하기 위한 확장성이 뛰어난 네트워킹 및 네트워크 정책 솔루션을 제공한다. 캘리코는 캡슐화나 오버레이 없이 구축되어 고성능의 대규모 데이터센터 네트워킹을 제공할 수 있다. 또한 캘리코는 분산 방화벽을 통해 쿠버네티스 파드에 대해 세분화된 의도기반의 네트워크 보안 정책을 제공한다.
|
||||
|
||||
캘리코는 플라넬, 일명 [canal](https://github.com/tigera/canal) 또는 네이티브 GCE, AWS나 Azure 네트워킹과 같은 다른 네트워킹 솔루션과 함께 정책 적용 모드로 실행될 수도 있다.
|
||||
|
||||
### 로마나
|
||||
|
||||
[로마나](http://romana.io)는 오버레이 네트워크 없이 쿠버네티스를 배포할 수 있는 오픈소스 네트워크 및 보안 자동화 솔루션이다. 로마나는 쿠버네티스 [네트워크 폴리시](/ko/docs/concepts/services-networking/network-policies/)를 지원하여 네트워크 네임스페이스에서 격리를 제공한다.
|
||||
|
||||
### Weaveworks의 위브넷
|
||||
|
||||
[위브넷](https://www.weave.works/products/weave-net/)은
|
||||
쿠버네티스 및 호스팅된 애플리케이션을 위한 탄력적이고 사용하기 쉬운 네트워크이다.
|
||||
위브넷은 [CNI 플러그인](https://www.weave.works/docs/net/latest/cni-plugin/) 또는
|
||||
독립형으로 실행된다. 두 버전에서, 실행하기 위해 구성이나 추가 코드가 필요하지 않으며,
|
||||
두 경우 모두, 쿠버네티스의 표준과 같이 네트워크에서 파드별로 하나의 IP 주소를 제공한다.
|
||||
|
||||
{{% /capture %}}
|
||||
|
||||
{{% capture whatsnext %}}
|
||||
|
||||
네트워크 모델의 초기 설계와 그 근거 및 미래의 계획은
|
||||
[네트워킹 디자인 문서](https://git.k8s.io/community/contributors/design-proposals/network/networking.md)에
|
||||
자세히 설명되어 있다.
|
||||
|
||||
{{% /capture %}}
|
||||
Reference in New Issue
Block a user