启动实例¶
在包含容器基础设施管理服务的环境中,您可以配置由虚拟机或裸机服务器组成的容器集群。容器基础设施管理服务使用 集群模板 来描述如何构建一个 集群。在以下每个示例中,您将为特定的 COE 创建一个集群模板,然后使用相应的集群模板配置集群。然后,您可以使用适当的 COE 客户端或端点来创建容器。
创建外部网络(可选)¶
要创建 magnum 集群,您需要一个外部网络。如果没有外部网络,请创建一个。
根据您的云提供商对您的案例的支持,使用合适的提供商创建外部网络
$ openstack network create public --provider-network-type vxlan \ --external \ --project service +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2017-03-27T10:09:04Z | | description | | | dns_domain | None | | id | 372170ca-7d2e-48a2-8449-670e4ab66c23 | | ipv4_address_scope | None | | ipv6_address_scope | None | | is_default | False | | mtu | 1450 | | name | public | | port_security_enabled | True | | project_id | 224c32c0dd2e49cbaadfd1cda069f149 | | provider:network_type | vxlan | | provider:physical_network | None | | provider:segmentation_id | 3 | | qos_policy_id | None | | revision_number | 4 | | router:external | External | | segments | None | | shared | False | | status | ACTIVE | | subnets | | | updated_at | 2017-03-27T10:09:04Z | +---------------------------+--------------------------------------+ $ openstack subnet create public-subnet --network public \ --subnet-range 192.168.1.0/24 \ --gateway 192.168.1.1 \ --ip-version 4 +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | allocation_pools | 192.168.1.2-192.168.1.254 | | cidr | 192.168.1.0/24 | | created_at | 2017-03-27T10:46:15Z | | description | | | dns_nameservers | | | enable_dhcp | True | | gateway_ip | 192.168.1.1 | | host_routes | | | id | 04185f6c-ea31-4109-b20b-fd7f935b3828 | | ip_version | 4 | | ipv6_address_mode | None | | ipv6_ra_mode | None | | name | public-subnet | | network_id | 372170ca-7d2e-48a2-8449-670e4ab66c23 | | project_id | d9e40a0aff30441083d9f279a0ff50de | | revision_number | 2 | | segment_id | None | | service_types | | | subnetpool_id | None | | updated_at | 2017-03-27T10:46:15Z | +-------------------+--------------------------------------+
创建密钥对(可选)¶
要创建 magnum 集群,您需要一个密钥对,该密钥对将传递到集群的所有计算实例。如果您的项目没有密钥对,请创建一个。
在计算服务上创建密钥对
$ openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey +-------------+-------------------------------------------------+ | Field | Value | +-------------+-------------------------------------------------+ | fingerprint | 05:be:32:07:58:a7:e8:0b:05:9b:81:6d:80:9a:4e:b1 | | name | mykey | | user_id | 2d4398dbd5274707bf100a9dbbe85819 | +-------------+-------------------------------------------------+
将集群所需的镜像上传到镜像服务¶
Kubernetes 驱动程序需要 Fedora CoreOS 镜像。请参考每个 Magnum 版本的‘支持版本’。
下载镜像
$ export FCOS_VERSION="35.20220116.3.0" $ wget https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/${FCOS_VERSION}/x86_64/fedora-coreos-${FCOS_VERSION}-openstack.x86_64.qcow2.xz $ unxz fedora-coreos-${FCOS_VERSION}-openstack.x86_64.qcow2.xz
将镜像注册到镜像服务,并将
os_distro属性设置为fedora-coreos$ openstack image create \ --disk-format=qcow2 \ --container-format=bare \ --file=fedora-coreos-${FCOS_VERSION}-openstack.x86_64.qcow2 \ --property os_distro='fedora-coreos' \ fedora-coreos-latest
配置 Kubernetes 集群并创建部署¶
按照此示例,您将配置一个包含一个 master 和一个 node 的 Kubernetes 集群。然后,使用 Kubernetes 的原生客户端 kubectl,您将创建一个部署。
使用
fedora-coreos-latest镜像、m1.small作为 master 和 node 的 flavor、public作为外部网络以及8.8.8.8作为 DNS nameserver,创建 Kubernetes 集群模板,使用以下命令$ openstack coe cluster template create kubernetes-cluster-template \ --image fedora-coreos-latest \ --external-network public \ --dns-nameserver 8.8.8.8 \ --master-flavor m1.small \ --flavor m1.small \ --coe kubernetes
使用
mykey作为密钥对,使用以下命令配置一个包含一个 node 和一个 master 的集群$ openstack coe cluster create kubernetes-cluster \ --cluster-template kubernetes-cluster-template \ --master-count 1 \ --node-count 1 \ --keypair mykey Request to create cluster b1ef3528-ac03-4459-bbf7-22649bfbc84f has been accepted.
您的集群现在正在创建。创建时间取决于您的基础设施性能。您可以使用以下命令检查集群状态:
openstack coe cluster list或openstack coe cluster show kubernetes-cluster。$ openstack coe cluster list +--------------------------------------+--------------------+---------+------------+--------------+-----------------+ | uuid | name | keypair | node_count | master_count | status | +--------------------------------------+--------------------+---------+------------+--------------+-----------------+ | b1ef3528-ac03-4459-bbf7-22649bfbc84f | kubernetes-cluster | mykey | 1 | 1 | CREATE_COMPLETE | +--------------------------------------+--------------------+---------+------------+--------------+-----------------+
将上述集群的凭据添加到您的环境
$ mkdir -p ~/clusters/kubernetes-cluster $ cd ~/clusters/kubernetes-cluster $ openstack coe cluster config kubernetes-cluster
上述命令会将身份验证工件保存到目录
~/clusters/kubernetes-cluster中。它将输出一个命令来设置KUBECONFIG环境变量export KUBECONFIG=/home/user/clusters/kubernetes-cluster/config您可以列出 Kubernetes 集群的控制器组件,并检查它们是否为
Running$ kubectl -n kube-system get po NAME READY STATUS RESTARTS AGE kube-controller-manager-ku-hesuip7l3i-0-5mqijvszepxw-kube-master-rqwmwne7rjh2 1/1 Running 0 1h kube-proxy-ku-hesuip7l3i-0-5mqijvszepxw-kube-master-rqwmwne7rjh2 1/1 Running 0 1h kube-proxy-ku-wmmticfvdr-0-k53p22xmlxvx-kube-minion-x4ly6zfhrrui 1/1 Running 0 1h kube-scheduler-ku-hesuip7l3i-0-5mqijvszepxw-kube-master-rqwmwne7rjh2 1/1 Running 0 1h kubernetes-dashboard-3203831700-zvj2d 1/1 Running 0 1h
现在,您可以创建一个 nginx 部署并验证它是否正在运行
$ kubectl run nginx --image=nginx --replicas=5 deployment "nginx" created $ kubectl get po NAME READY STATUS RESTARTS AGE nginx-701339712-2ngt8 1/1 Running 0 15s nginx-701339712-j8r3d 1/1 Running 0 15s nginx-701339712-mb6jb 1/1 Running 0 15s nginx-701339712-q115k 1/1 Running 0 15s nginx-701339712-tb5lp 1/1 Running 0 15s
删除集群
$ openstack coe cluster delete kubernetes-cluster Request to delete cluster kubernetes-cluster has been accepted.