Raspberry Pi의 K3s - Ingress
5028 단어 k3skubernetesraspberrypi2021
인그레스 개요
K3s는 Traefik Ingress Controller을 자동으로 배포하고 Klipper라는 서비스 로드 밸런서를 제공합니다.
kube-system
네임스페이스에 배포된 모든 항목을 보려면 다음 명령을 실행합니다.kubectl get all --namespace kube-system
참고: 기본 컨텍스트가
rpi-k3s
로 설정되어 있으므로 모든 명령에 --context
를 지정할 필요가 없습니다.이것은 Traefik과 관련된 다음 리소스를 보여줍니다.
pod/traefik-97b44b794-dbmz2
service/traefik
deployment.apps/traefik
replicaset.apps/traefik-97b44b794
그리고 Klipper 로드 밸런서와 관련된 다음 리소스:
pod/svclb-traefik-fc57n
pod/svclb-traefik-mj4md
pod/svclb-traefik-4qnbh
daemonset.apps/svclb-traefik
traefik 배포에는 이미지
rancher/library-traefik:2.4.8
를 사용하고 컨테이너 포트8000
(웹) 및 8443
(웹 보안)가 있는 하나의 컨테이너가 있는 포드에 대한 사양이 포함되어 있습니다.traefik 서비스는 트래픽 포드에 대한 LoadBalancer를 지정하고 서비스의 포트
80
를 traefik 컨테이너의 포트8000
에 매핑하고 서비스의 포트443
를 traefik 컨테이너의 포트8443
에 매핑합니다.그런 다음 Klipper는
svclb-traefik
라는 DaemonSet를 생성합니다. 이 DaemonSet는 각 노드에서 서비스에 대한 프록시 역할을 하는 포드를 생성합니다. 이러한 각 포드는 노드의 외부 IP 주소에서 액세스할 수 있으며 서비스의 각 포트에 매핑되는 포트80
및 443
를 노출합니다.전체 설정은 다음과 같습니다.
다음으로 예제 애플리케이션을 배포하고 Traefik을 통해 노출할 수 있습니다.
침투 테스트
이 예제는 Traefik 문서에서 수정되었습니다.
whoami
라는 네임스페이스를 만듭니다.kind: Namespace
apiVersion: v1
metadata:
name: whoami
whoami
컨테이너로 두 개의 팟(Pod)을 실행하기 위한 배치를 작성하십시오.kind: Deployment
apiVersion: apps/v1
metadata:
name: whoami
namespace: whoami
labels:
app: traefiklabs
name: whoami
spec:
replicas: 2
selector:
matchLabels:
app: traefiklabs
task: whoami
template:
metadata:
labels:
app: traefiklabs
task: whoami
spec:
containers:
- name: whoami
image: traefik/whoami
ports:
- containerPort: 80
whoami
배포를 위한 서비스를 만듭니다.apiVersion: v1
kind: Service
metadata:
name: whoami
namespace: whoami
spec:
ports:
- name: http
port: 80
selector:
app: traefiklabs
task: whoami
whoami
서비스를 Traefik에 연결하는 인그레스를 만듭니다.kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
name: whoami
namespace: whoami
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web
spec:
rules:
- http:
paths:
- path: /bar
pathType: Prefix
backend:
service:
name: whoami
port:
number: 80
- path: /foo
pathType: Prefix
backend:
service:
name: whoami
port:
number: 80
위의 수신으로 이제 모든 노드의 외부 IP 주소를 사용하여 포트 80에서 경로
/foo
또는 /bar
에 액세스할 수 있어야 합니다. 이제 전체 설정은 다음과 같습니다.브라우저를 열고
http://192.168.1.244/bar
로 이동하면 다음과 같은 결과가 표시됩니다.Hostname: whoami-7d666f84d8-4fs7c
IP: 127.0.0.1
IP: ::1
IP: 10.42.1.4
IP: fe80::c414:76ff:fe4c:75cc
RemoteAddr: 10.42.2.3:39256
GET /bar HTTP/1.1
Host: 192.168.1.244
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.5
Dnt: 1
Sec-Gpc: 1
Upgrade-Insecure-Requests: 1
X-Forwarded-For: 10.42.0.0
X-Forwarded-Host: 192.168.1.244
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: traefik-97b44b794-dbmz2
X-Real-Ip: 10.42.0.0
이것은 요청이
whoami
에서 10.42.1.4
컨테이너 중 하나에 도달했음을 보여줍니다.페이지를 새로 고치면
whoami
의 다른 10.42.2.5
컨테이너에서 응답이 온 것을 볼 수 있습니다.Traefik이 라운드 로빙 로드 밸런싱을 수행하고 있으므로 요청이 계속해서 두 컨테이너
whoami
간에 번갈아 나타납니다.
Reference
이 문제에 관하여(Raspberry Pi의 K3s - Ingress), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bbende/k3s-on-raspberry-pi-ingress-lf4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)