오프라인(또는 온프레미스) 환경의 Kubespray

오프라인(또는 온프레미스) 환경의 Kubespray

저는 k8s와 kubespray를 처음 사용합니다.

내 목적은 온프레미스 환경에 k8s 클러스터를 구축하는 것입니다. 퍼블릭 IP와 인터넷 액세스가 가능한 EC2를 사용하면 모든 것이 괜찮았습니다. 그러나 더 복잡한 제약으로 인해 나는 막혔습니다. 아래는 내 제약 조건입니다.

  • 공용 IP 및 인터넷 액세스가 가능한 요새 1개
  • 공용 IP와 인터넷 액세스가 모두 없는 n개 노드

에 따르면쿠베스프레이 문서, 다소 많은 설정이 필요합니다. 하지만 제 생각에는 Bastion이 인터넷에 완벽하게 액세스할 수 있으므로 kubespray를 사용하여 k8s 클러스터를 쉽게 구축할 수 있는 방법이 있을 수 있습니다.

이 작업을 수행하는 블로그나 단계별 지침이 있나요?

답변1

내가 아는 한, 귀하의 요새가 공개 레지스트리 및 저장소에 액세스할 수 있다면 Kubernetes 노드를 대신하여 쿼리를 프록시하는 일부 Squid 서버를 설치할 수 있습니다.

이 경우 이는 더 이상 연결이 끊긴 배포가 아니며 해당 프록시를 사용하여 자산을 원래 위치에서 끌어내는 데 http_proxy https_proxyno_proxy변수를 설정할 수 있습니다.group_vars/all.yml

apt-get install squid또는 같은 것을 사용해 보세요 dnf install squid. 기본 squid.conf는 다음과 같습니다:

http_port 3128
cache_log /var/log/squid/cache.log
cache_mem 256 MB
cache_dir aufs /var/spool/squid 10240 16 256
maximum_object_size 1024 MB
cache_effective_group proxy
hosts_file /etc/hosts
logfile_rotate 4
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
access_log /var/log/squid/access.log combined
coredump_dir /var/spool/squid
error_directory /usr/share/squid/errors/en
http_access allow all
http_reply_access allow all
cache allow all
icp_access allow all

Kubernetes 노드 중 하나에서 연결을 테스트합니다.

# curl -vvv --proxy http://10.42.44.100:3128/ https://perdu.com
...
* Connected to 10.42.44.100 (10.42.44.100) port 3128 (#0)
...
* Establish HTTP proxy tunnel to perdu.com:443
...

이제 Kubespray 인벤토리가 해당 프록시를 사용하여 적절한 변수를 설정하는지 확인하세요. 컨테이너 런타임과 OS 패키지 관리자 구성은 모두 이를 사용합니다.


어떤 이유로 해당 프록시 설정이 적합하지 않은 경우 해당 문서에 언급된 모든 이미지와 파일을 미러링해야 합니다 offline-environment.md.

kubectl / etcd / ... 바이너리와 파일을 위한 Nginx 서버를 설정하고 docker-registry 컨테이너를 실행하여 해당 이미지를 미러링할 수도 있습니다. 안전하지 않은 레지스트리 오류(설정할 추가 Kubespray 변수)를 무시하고 컨테이너 런타임을 올바르게 구성해야 하거나 OS가 레지스트리 서버 인증서에 서명한 CA를 신뢰해야 한다는 점을 명심하세요.

관련 정보