질문이 있는 경우 kubespray.io에서 문서를 확인하고 kubernetes slack 채널 #kubespray 에서 참여하세요. 여기서 초대장을 받으실 수 있습니다
다음은 Kubespray를 사용하여 Kubernetes 클러스터를 배포하는 몇 가지 방법입니다.
Ansible 설치 가이드에 따라 Ansible을 설치한 후 다음 단계를 실행하세요.
# Copy ` ` inventory/sample ` ` as ` ` inventory/mycluster ` `
cp -rfp inventory/sample inventory/mycluster
# Update Ansible inventory file with inventory builder
declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
# Review and change parameters under ` ` inventory/mycluster/group_vars ` `
cat inventory/mycluster/group_vars/all/all.yml
cat inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml
# Clean up old Kubernetes cluster with Ansible Playbook - run the playbook as root
# The option ` --become ` is required, as for example cleaning up SSL keys in /etc/,
# uninstalling old packages and interacting with various systemd daemons.
# Without --become the playbook will fail to run !
# And be mind it will remove the current kubernetes cluster (if it ' s running)!
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root reset.yml
# Deploy Kubespray with Ansible Playbook - run the playbook as root
# The option ` --become ` is required, as for example writing SSL keys in /etc/,
# installing packages and interacting with various systemd daemons.
# Without --become the playbook will fail to run !
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
참고: Ansible이 제어 노드의 시스템 패키지를 통해 이미 설치된 경우 sudo pip install -r requirements.txt
를 통해 설치된 Python 패키지는 다른 디렉터리 트리(예: /usr/local/lib/python2.7/dist-packages
)로 이동합니다. Ubuntu의 경우) Ansible의 파일입니다(예: Ubuntu에서는 여전히 /usr/lib/python2.7/dist-packages/ansible
). 결과적으로 ansible-playbook
명령은 다음과 같이 실패합니다.
ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.
이는 작업이 요구 requirements.txt
에 있는 모듈에 의존한다는 것을 의미할 가능성이 높습니다.
이 문제를 해결하는 한 가지 방법은 시스템 Ansible 패키지를 제거한 다음 pip
통해 Ansible을 다시 설치하는 것입니다. 그러나 이것이 항상 가능한 것은 아니며 패키지 버전에 주의해야 합니다. 해결 방법은 ANSIBLE_LIBRARY
및 ANSIBLE_MODULE_UTILS
환경 변수를 각각 pip
설치 위치의 ansible/modules
및 ansible/module_utils
하위 디렉터리로 설정하는 것으로 구성됩니다. 이는 ansible-playbook
실행하기 전에 pip show [package]
실행하여 표시되는 Location
입니다.
올바른 Ansible 버전을 모두 확보하는 간단한 방법은 Quay에서 사전 빌드된 Docker 이미지를 사용하는 것입니다. 그런 다음 다음과 같이 바인드 마운트를 사용하여 컨테이너의 인벤토리 및 SSH 키에 액세스해야 합니다.
git checkout v2.26.0
docker pull quay.io/kubespray/kubespray:v2.26.0
docker run --rm -it --mount type=bind,source="$(pwd)"/inventory/sample,dst=/inventory
--mount type=bind,source="${HOME}"/.ssh/id_rsa,dst=/root/.ssh/id_rsa
quay.io/kubespray/kubespray:v2.26.0 bash
# Inside the container you may now run the kubespray playbooks:
ansible-playbook -i /inventory/inventory.ini --private-key /root/.ssh/id_rsa cluster.yml
이 저장소를 Ansible 컬렉션으로 사용하려면 여기를 참조하세요.
Vagrant의 경우 프로비저닝 작업을 위해 Python 종속성을 설치해야 합니다. Python
과 pip
설치되어 있는지 확인합니다.
python -V && pip -V
소프트웨어 버전이 반환되면 문제가 없는 것입니다. 그렇지 않은 경우 https://www.python.org/downloads/source/에서 Python을 다운로드하여 설치하십시오.
Ansible 설치 가이드에 따라 Ansible을 설치한 후 다음 단계를 실행하세요.
vagrant up
참고: Upstart/SysV init 기반 OS 유형은 지원되지 않습니다.
ansible_become
플래그 또는 명령 매개변수 --become or -b
지정해야 합니다.하드웨어: 이러한 제한은 Kubespray에 의해 보호됩니다. 워크로드에 대한 실제 요구 사항은 다를 수 있습니다. 크기 조정 가이드를 보려면 대규모 클러스터 구축 가이드로 이동하세요.
10개의 네트워크 플러그인 중에서 선택할 수 있습니다. (기본값: calico
, Vagrant가 flannel
사용하는 경우 제외)
플란넬: gre/vxlan(레이어 2) 네트워킹.
Calico는 네트워킹 및 네트워크 정책 제공업체입니다. Calico는 BGP 유무에 관계없이 비오버레이 및 오버레이 네트워크를 포함하여 다양한 상황에서 가장 효율적인 네트워킹을 제공하도록 설계된 유연한 네트워킹 옵션 세트를 지원합니다. Calico는 동일한 엔진을 사용하여 서비스 메시 계층에서 호스트, Pod 및 (Istio 및 Envoy를 사용하는 경우) 애플리케이션에 대한 네트워크 정책을 시행합니다.
cilium: 레이어 3/4 네트워킹(애플리케이션 프로토콜 보호 및 보안을 위한 레이어 7 포함)은 BPF 바이트코드를 Linux 커널에 동적으로 삽입하여 보안 서비스, 네트워킹 및 가시성 로직을 구현하도록 지원합니다.
weave: Weave는 외부 K/V 데이터베이스 클러스터가 필요하지 않은 경량 컨테이너 오버레이 네트워크입니다. ( weave
문제 해결 문서를 참조하세요).
kube-ovn: Kube-OVN은 OVN 기반 네트워크 가상화를 Kubernetes와 통합합니다. 기업을 위한 고급 컨테이너 네트워크 패브릭을 제공합니다.
kube-router: Kube-router는 운영 단순성과 고성능 제공을 목표로 하는 Kubernetes 네트워킹용 L3 CNI입니다. IPVS를 사용하여 Kube 서비스 프록시(kube-proxy를 대체하도록 설정된 경우), 네트워크 정책용 iptables, ods용 BGP를 제공합니다. L3 네트워킹(클러스터 외부 BGP 피어와의 선택적으로 BGP 피어링 포함) 또한 선택적으로 Kubernetes 클러스터 포드 CIDR, ClusterIP, 외부 IP 및 LoadBalancerIP에 대한 경로를 광고할 수도 있습니다.
macvlan: Macvlan은 Linux 네트워크 드라이버입니다. 포드에는 물리적(계층 2) 네트워크에 직접 연결된 고유한 Mac 및 IP 주소가 있습니다.
multus: Multus는 포드에 다중 네트워크 인터페이스 지원을 제공하는 메타 CNI 플러그인입니다. 각 인터페이스에 대해 Multus는 CNI 호출을 Calico, macvlan 등과 같은 보조 CNI 플러그인에 위임합니다.
custom_cni : 클러스터에 적용할 일부 매니페스트를 지정하여 자체 CNI를 가져오고 Kubespray에서 지원되지 않는 매니페스트를 사용할 수 있습니다. Helm 차트에서 제공하는 CNI의 예는 tests/files/custom_cni/README.md
및 tests/files/custom_cni/values.yaml
참조하세요.
사용할 네트워크 플러그인은 kube_network_plugin
변수에 의해 정의됩니다. 대신 내장된 클라우드 공급자 네트워킹을 활용하는 옵션도 있습니다. 네트워크 검사기도 참조하세요.
nginx: NGINX 수신 컨트롤러입니다.
metallb: MetalLB 베어메탈 서비스 LoadBalancer 공급자입니다.
CI/엔드 투 엔드 테스트 후원: CNCF, Equinix Metal, OVHcloud, ELASTX.
자세한 내용은 테스트 매트릭스를 참조하세요.