링에서 숙련 버리고는 Kubernetes : 세 점과 하나 개의 클러스터 및 서비스 구현

저자 | 알리 구름이 동쪽 사운드 판매 후 기술 전문가

출처 : 부두 노동자는, 원본을 보려면 클릭하십시오 .


는 Kubernetes 클러스터 서비스의 개념을 이해하는 측면에서 내 경험에 의하면, 그것은 더 어려운 일이다. 서비스 관련 문제를 해결하기 위해 그럴듯한 우리의 이해를 기반으로 특히 때, 그것은 매우 부드러운 될 것입니다.

이것은 초보자, 서비스 문제에 기초 갑자기 너무 핑의 IP 주소, 매우 어려운 이해에 반영되어 있지만, 심지어 매우 경험이 풍부한 엔지니어 관련 서비스의 iptables 구성을 이해하고, 또한 상당한 도전이다 .

여기에 오늘 기사는 더 나은 이해를 돕기, 깊이 원칙과 이행는 Kubernetes 클러스터 서비스를 설명 할 것이다.

클러스터 서비스의 성격이는 Kubernetes 무엇이다

개념적으로, 서비스는 Kubernetes 클러스터, 사실, 부하 분산 또는 역방향 프록시한다. 이것은 알리 클라우드로드 밸런싱 제품이며, 유사한 많은 장소가있다. 서비스가 자신의 IP 주소와 프런트 엔드 포트가로 그리고로드 밸런싱은, 용기의 복수가 같은 서비스 포드 그룹 뒤에 장착 될 것 "백 엔드 서버"이 "백 엔드 서버"는 자신의 IP 및 수신 포트가 있습니다.

파일

이러한로드 밸런싱 및 백 엔드 아키텍처는 Kubernetes 클러스터와 결합 할 때,로드 밸런싱 (유사 LVS) 역할을 수행하기위한 클러스터 노드 중 하나이며 다른 노드가 사용되는, 우리가 생각할 수있는 가장 직관적 인 방법을 달성하기 위해 후단 용기 부하 기.

파일

이러한 구현에있어서, 큰 결점은 단일 지점의 인이있다. 는 Kubernetes 클러스터 운영 및 유지 보수 관행 결정 자동화 지난 몇 년 동안 구글이며, 이러한 구현은 분명히 지능형 운영 및 유지 보수 단계 편차의 철학이다.

특파원 온다


사이드카 모드 (사이드카)는 마이크로 서비스 분야의 핵심 개념이다. 메신저와 함께 제공 약간의 인기 속담을 변경 사이드카 모드. 서비스 그리드이 잘 알고에 학생들과 확실히 잘 알고있다. 그러나, 사실은 덜 주목 수는 Kubernetes에게 원래 클러스터 서비스도 기반 사이드카 모드를 달성 할 수있다.

파일

참으로 모든 클러스터 노드는 Kubernetes 클러스터 서비스에서, 리버스 프록시 사이드카를 배치했다. 클러스터 서비스에 대한 모든 액세스에 액세스하려면, 백엔드 프록시 서비스가 노드에 컨테이너의 그룹으로 변환 반전 될 것입니다. 기본적으로,이 노드와 사이드카의 관계는 아래와 같이.

파일

현실에 서비스


두 개의 프론트, 우리가, 서비스,로드 밸런싱의는 Kubernetes 클러스터를 보았다 본질이다 리버스 프록시, 우리는 실제 구현에서,이 역방향 프록시가 클러스터의 노드에 배포되지 않은 것을 알고, 각 노드에 배포 된 사이드카 클러스터 노드로.

여기서 리버스 프록시 서비스를 현실로 빛난다, 즉 KUBE 프록시 클러스터 제어기는 Kubernetes이다. 원리는 Kubernetes 클러스터 컨트롤러에서 내 다른 하나 개를 참조하십시오 컨트롤러에 대한 기사 . 간단히 말해, KUBE-프록시 클러스터 노드에 배포 된 컨트롤러로, 그들은 클러스터 API 서버를 통해 클러스터 변경의 상태를 모니터링 할 수 있습니다. 새로운 서비스를 만들 때, KUBE-프록시는 리버스 프록시 구성에 번역 클러스터 서비스, 재산의 상태가 될 것입니다.

파일

문제의 나머지 부분에 대한 어떤 것은 리버스 프록시, 위의 그림을 달성하는 프록시입니다.

구현


는 Kubernetes 클러스터 노드가 역방향 프록시 서비스 방법을 달성하기 위해 세 가지 종류, 즉 사용자 공간, iptables에와 IPVS 주로있다. 오늘, 우리는 다만 방법 기본 네트워크 플란넬 알리 클라우드 클러스터 기반 네트워크의 분석을 깊이 iptables는.

필터 프레임

이제, 시나리오를 가정 해 봅시다. 우리는 집이있다. 집은 물 유입 관 및 유출 관을 갖는다. 물 속으로 유입하기 때문에 파이프로부터 불순물 마실 수 없다. 그리고 우리는 출구 파이프에서 물이 마시기에 안전에서 기대합니다. 이를 위해, 우리는 파이프 플러스 불순물의 중간에 필터를 잘라.

파일
며칠 후, 우리의 요구가 변경, 우리는 또한 물이 뜨거운 희망, 술을 집에서 밖으로 물 흐름이 필요 아닙니다. 그래서 우리는 다음 히터를 추가, 물에 상처를 추가 할 수 밖에 없다.

파일
분명히,이 컷 물 파이프, 새로운 기능을 추가하는 것은 매우 추악한 방법입니다. 수요가 언제든지 될 가능성이 있기 때문에, 우리는 어려운 물이 장소를 절단 할 수 찾을 수 년 정도 후, 다음을 확인합니다.

그래서 우리는 재 설계 할 필요가있다. 첫째, 우리는 단지 수도관 그래서 우리는 고정 절단 할 필요가 물 파이프를 절단 할 수 없습니다. 장면의 가장자리 위에, 예를 들어, 우리는 물이 단 하나의 절개 부위를 가질 수 있는지 확인하십시오. 둘째, 물에 대한 두 가지 접근 방법 : 추상, 물리적, 화학적 변화.

파일
우리는 온도를 증가시킬 필요가있는 경우,이 기능 모듈의 물리적 변화를 가열하는 규칙을 높일 수 있으며, 우리는이 기능 모듈에 화학적 변화에 불순물을 필터링 룰을 높일 수있는 불순물을 필터링해야하는 경우 또는 그 이상의 디자인을 기반.

필터 프레임보다도, 그것은 많은 좋은에, 물보다 분명한 방식이다. 이 디자인 프레임 워크는, 우리는 주로 두 가지를, 하나는 고정 된 파이프 절개하고, 물 처리의 다른 두 종류의 추상적 인 방법입니다.

이 두 가지를 이해하면, 우리는 iptables를 볼 수 있습니다, 또는 좀 더 정확하게는, 넷 일을 말. 넷 실제로 필터 프레임이다. 네트워크 라우팅 파이프 송신 넷 패킷 다섯 개 포트, 즉 PREROUTING, FORWARD, POSTROUTING, 입력과 출력의 합계를 삭감; 넷 동시 패킷망의 수를 포함한 치료 NAT, 필터를 포함하는 정의한다.

파일
그것은 언급, 라우팅 크게 전달하는 것은 위의 넷 필터의 복잡성을 증가 시키며, 우리는 라우팅 및 전달을 고려하지 않는 경우, 다음과 같은 간단한 넷 필터 우리의 물 필터 프레임이 될해야합니다.

네트워크 노드 확대

이제 우리는 전체 그림는 Kubernetes 네트워크 클러스터 노드 봐. 측면도 노드 네트워크 환경에서, 네트워크는 서로 다른 네임 스페이스들로 분할되며, 네트워크는 호스트 네트워크 네임 스페이스와 스페이스 포드를 포함하며, 길이보기 각 네트워크 네임이 전체 네트워크 스택의 애플리케이션에서의 프로토콜 스택을 포함 네트워크 장치에 관한 것이다.

네트워크 장비의이 계층에서, 우리는 cni0 가상 브리지를 통과 한 시스템 내에서 가상 로컬 영역 네트워크를 설정합니다. veth 오른쪽에서 가상 로컬 영역 네트워크를 통해 네트워크에 포드 연결. 호스트 및 라우팅 cni0 가상 로컬 영역 네트워크 인터페이스 eth0를 외부 통신.

이 계층의 네트워크 프로토콜 스택에서, 우리는 역방향 프록시 클러스터 노드를 달성하기 위해 넷 필터 프레임웍을 필터링하도록 프로그램 될 수있다.

파일

리버스 프록시를 달성, 결국, DNAT을하는 것입니다, 그는 클러스터 서비스 IP 및 컨테이너의 특정 그룹에 수정 된 IP와 포트로 전송 된 패킷의 포트로 전송됩니다.

도 넷 필터 프레임을 참조하여, 우리는 넷으로, NAT PREROUTING, OUTPUT 규칙 및 POSTROUGING 3 개소의 첨가에 의해 상기 패킷의 소스 어드레스 또는 목적지 어드레스를 변경할 수 있다는 것을 알고있다.

목적지 어드레스를 변경하는, 즉 DNAT 할 필요가 있기 때문에, 변형이 라우팅되어야 (라우팅)이 그 데이터 패킷들을 정확하게 라우팅 될 수 규칙 PREROUTING 출력을 적용해야하는 리버스 프록시의 구현을 위해 종래 발생한 두 위치.

어느, 포드에서 서비스에 액세스하는 트래픽을 처리하기위한 규칙을 PREOURTING. 네트워크에서 데이터 패킷 cni0하는 포드 veth 후, 호스트 프로토콜 스택을 입력, 우리는 먼저 서비스에 패킷이이 위치에 DNAT를 할 수 있도록 거래는, 넷 필터 PREROUTING을 통과 할 것입니다. DNAT 처리 후의 호스트 경로를 통해 전달을 eth0를 올바른 클러스터 노드로 송신함으로써 다른 포드의 어드레스로 패킷의 목적지 주소.

이 위치 DNAT 규칙 추가 출력이 호스트 네트워크 서비스로부터 전송 된 데이터 패킷을 처리하기 위해 사용되면, 원칙적으로는, 수 신지 어드레스를 수정하는 라우팅 및 전달을 용이하게하는, 즉 라우팅 전에 통해 유사하다.

업그레이드 필터 프레임

필터 틀에서는 넷 필터는 필터 프레임 참조. 넷 데이터 "파이프가"각각 다섯 개 포트 다섯 개 포트를 차단, 데이터 패킷 처리는 어떤 작업을 수행한다. 절개 및 고정 네트워크 패킷 분류 방법은 크게 필터 프레임을 최적화 된,하지만 중요한 문제가 있지만 우리는 여전히 파이프 라인의 변화는 새로운 기능을 충족 할 수 있도록해야한다는 것입니다. 즉, 프레임 워크와 파이프는 완전히 두 필터링을 분리하지 않습니다.

위해이 개념 파이프 및 필터링, 넷 필터 테이블을 모두 분리합니다. 넷 필터 표는 필터의 중심, 핵심 기능을 분류 방법 (테이블), 및 각 필터 조직 (체인)의 필터 규칙을 필터링하는 것이다.

파일

필터링 및 디커플링 파이프 후, 데이터 패킷의 모든 처리는 테이블 구성되었다. 파이프에 절 결부 (5), 플로우에 유일한 출입구는 전사 공정은 도관을 따라 계속 후 계속 필터 중심 흐름에 대한 트래픽을 전송하는 책임이있다.

상술 한 바와 같이, 표에서, 조직의 규칙 넷 체인된다. 표, 각 파이프에 대한 기본 체인을 노치뿐만 아니라 우리 자신의 사용자 정의 체인 덧붙였다. 기본 데이터 항목이 체인으로 점프하여 일부 복잡한 기능을 수행하는 기본 사슬을 정의 할 수있는 체인. 이점은 여기에 사용자 정의 체인이 분명하다 추가 할 수 있습니다. 리버스 프록시는 Kubernetes 클러스터 노드를 달성하는 등, 복잡한 필터링을 완료하기 위해, 우리는 우리의 규칙에 사용자 정의 모듈 형 체인을 사용할 수 있습니다.

리버스 프록시 서비스 구현 정의 체인

클러스터 서버 리버스 프록시는 사실, 사용자 정의 체인의 사용이다, 모듈은 DNAT는 패킷을 변환 달성했다. 모든 유입 및 서비스의 전체에 대응 KUBE 서비스 체인 전체 리버스 프록시 항목, 상기 체인 KUBE-SVC-XXXX 체인 항목이 어떤 특정 서비스되어 상기 IP 링크를 기반 KUBE 서비스 서비스는, 특정 서비스에 뛰어 KUBE-SVC-XXXX 체인 및 KUBE -9 월-XXXX 즉 점이 특히 서비스 체인 KUBE-SVC-XXXX 알고리즘은, 엔드 포인트 (전형적으로 랜덤) 일정한 이동하는 특정 어드레스 및 포트 포드의 고리를 나타내고 체인.

파일

목적지 어드레스를 변경하는, 즉 DNAT을 수행 할 필요가 있기 때문에 앞서 언급 이러한 변형은 그 데이터 패킷들을 정확하게 라우팅을 처리 할 수 ​​있도록 라우팅하기 전에 발생한다. 그래서 KUBE-서비스는 PREROUTING과 OUTPUT 두 개의 기본 체인 호출됩니다.

개요


이 글을 통해, 우리는 클러스터 개념과 서비스의 실현을는 Kubernetes 깊은 이해가 있어야합니다. 기본적으로, 우리는 세 가지 점을 파악해야합니다

  • 이 서비스는 기본적으로로드 밸런싱입니다;
  • 서비스로드 밸런싱 서비스는 유사한 사이드카 그리드 패턴을 사용하여 구현하지만, LVS 유형이 아닌 단독 모드;
  • KUBE-프록시 자연에 클러스터 컨트롤러입니다. 또한, 우리는 필터 프레임의 디자인을 생각하고,이 기준으로,로드 밸런싱 서비스의 iptables 구현을 사용의 원리를 이해합니다.

원본 링크 : https://yq.aliyun.com/articles/710873

"알리바바 클라우드 네이티브 마이크로 채널 대중 번호 (ID : Alicloudnative) 마이크로 서비스에 초점, 서버를 사용는, 컨테이너, 서비스 메쉬 및 클라우드 네이티브에서 인기있는 기술 동향을 중심으로 다른 기술 분야는 클라우드 네이티브 대규모 상륙 연습은, 대부분의 클라우드 네이티브 개발자를 이해한다 기술 공개 번호입니다. "

추천

출처www.cnblogs.com/alisystemsoftware/p/11571548.html