OKD项目在vSphere上的用户供应基础设施(UPI)部署指南
概述
本文将详细介绍如何在VMware vSphere环境中通过用户供应基础设施(UPI)方式部署OKD 4集群。OKD是OpenShift的开源上游项目,提供了强大的容器应用平台。通过UPI方式,用户可以完全控制基础设施的配置过程,特别适合有特定环境要求的企业用户。
前置准备
在开始部署前,请确保满足以下条件:
- 已安装对应版本的
openshift-installer和oc命令行工具 - 已配置好
govc工具并完成vSphere环境认证 - 准备一个可用的vSphere网络端口组
- 了解OKD不会与vSphere平台深度集成(使用
platform: none配置)
部署流程详解
1. 获取Fedora CoreOS镜像
Fedora CoreOS(FCOS)是OKD 4的推荐主机操作系统,专为运行容器化工作负载而优化。
# 下载FCOS OVA镜像
wget https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/31.20200113.3.1/x86_64/fedora-coreos-31.20200113.3.1-vmware.x86_64.ova
# 导入到vSphere
govc import.ova -ds=<datastore_name> \
-name fedora-coreos-31.20200113.3.1-vmware.x86_64 \
fedora-coreos-31.20200113.3.1-vmware.x86_64.ova
2. 创建虚拟机模板
使用以下脚本批量创建控制平面、工作节点和引导节点虚拟机:
#!/bin/bash
# 设置集群参数
template_name="fedora-coreos-31.20200113.3.1-vmware.x86_64"
cluster_name=<cluster_name>
datastore_name=<datastore_name>
vm_folder=<folder_path>
network_name=<network_name>
master_node_count=3 # 推荐3个控制节点
worker_node_count=2 # 根据需求调整
# 创建控制节点
for (( i=1; i<=${master_node_count}; i++ )); do
vm="${cluster_name}-master-${i}"
govc vm.clone -vm "${template_name}" \
-ds "${datastore_name}" \
-folder "${vm_folder}" \
-on="false" \
-c="4" -m="8192" \
-net="${network_name}" \
$vm
govc vm.disk.change -vm $vm -disk.label "Hard disk 1" -size 120G
done
# 创建工作节点
for (( i=1; i<=${worker_node_count}; i++ )); do
vm="${cluster_name}-worker-${i}"
govc vm.clone -vm "${template_name}" \
-ds "${datastore_name}" \
-folder "${vm_folder}" \
-on="false" \
-c="4" -m="8192" \
-net="${network_name}" \
$vm
govc vm.disk.change -vm $vm -disk.label "Hard disk 1" -size 120G
done
# 创建引导节点
vm="${cluster_name}-bootstrap"
govc vm.clone -vm "${template_name}" \
-ds "${datastore_name}" \
-folder "${vm_folder}" \
-on="false" \
-c="4" -m="8192" \
-net="${network_name}" \
$vm
govc vm.disk.change -vm $vm -disk.label "Hard disk 1" -size 120G
3. 配置网络基础设施
OKD集群需要正确配置以下网络组件:
- DNS服务:为集群节点提供正向和反向解析
- DHCP服务:为节点分配IP地址和主机名
- 负载均衡器:分发API服务器和机器配置服务流量
建议配置至少3个控制平面节点以实现高可用性,负载均衡器应配置为监听6443(API)和22623(机器配置)端口。
4. 生成集群配置文件
创建install-config.yaml文件,这是集群的核心配置文件:
apiVersion: v1
baseDomain: example.com
metadata:
name: okd-cluster
compute:
- hyperthreading: Enabled
name: worker
replicas: 2
controlPlane:
hyperthreading: Enabled
name: master
replicas: 3
platform:
none: {}
pullSecret: '<从官方获取的pull secret>'
sshKey: 'ssh-rsa AAAAB3NzaC1...'
5. 生成Ignition配置文件
Ignition是FCOS使用的初始化系统,用于配置节点:
openshift-install create ignition-configs
此命令会生成以下文件:
bootstrap.ign- 引导节点配置master.ign- 控制平面节点配置worker.ign- 工作节点配置
6. 配置虚拟机元数据
由于bootstrap.ign文件较大,需要通过HTTP服务提供:
{
"ignition": {
"config": {
"merge": [
{
"source": "http://<YOUR_SERVER_IP>:8000/bootstrap.ign",
"verification": {}
}
]
},
"timeouts": {},
"version": "3.0.0"
}
}
使用脚本为所有节点设置元数据:
#!/bin/bash
cluster_name=okd-cluster
master_node_count=3
worker_node_count=2
# 设置控制节点元数据
for (( i=1; i<=${master_node_count}; i++ )); do
vm="${cluster_name}-master-${i}"
govc vm.change -vm $vm \
-e guestinfo.ignition.config.data="$(cat master.ign | base64 -w0)" \
-e guestinfo.ignition.config.data.encoding="base64" \
-e disk.EnableUUID="TRUE"
done
# 设置工作节点元数据
for (( i=1; i<=${worker_node_count}; i++ )); do
vm="${cluster_name}-worker-${i}"
govc vm.change -vm $vm \
-e guestinfo.ignition.config.data="$(cat worker.ign | base64 -w0)" \
-e guestinfo.ignition.config.data.encoding="base64" \
-e disk.EnableUUID="TRUE"
done
# 设置引导节点元数据
vm="${cluster_name}-bootstrap"
govc vm.change -vm $vm \
-e guestinfo.ignition.config.data="$(cat append-bootstrap.ign | base64 -w0)" \
-e guestinfo.ignition.config.data.encoding="base64" \
-e disk.EnableUUID="TRUE"
7. 启动集群节点
按照以下顺序启动节点:
- 首先启动引导节点,等待其完成FCOS安装并启动API服务
- 启动控制平面节点,等待它们加入etcd集群
- 最后启动工作节点
使用以下命令监控引导过程:
openshift-install wait-for bootstrap-complete --log-level debug
8. 完成集群安装
引导完成后,需要执行以下操作:
-
批准节点证书签名请求(CSR):
oc get csr -ojson | jq -r '.items[] | select(.status == {} ) | .metadata.name' | xargs --no-run-if-empty oc adm certificate approve -
配置镜像仓库存储:
oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed","storage":{"emptyDir":{}}}}' -
等待安装完成:
openshift-install wait-for install-complete --log-level debug
集群初始化后配置
安装完成后,建议执行以下操作:
- 配置身份提供程序,禁用临时kubeadmin用户
- 根据需求配置持久化存储
- 设置集群监控和日志收集
- 配置网络策略和安全性设置
故障排查技巧
- 使用
journalctl -u kubelet查看kubelet日志 - 通过
crictl ps和crictl logs检查容器状态 - 检查API服务器和机器配置服务端口(6443和22623)是否可访问
- 验证DNS解析和网络连通性
通过以上步骤,您可以在vSphere环境中成功部署一个高可用的OKD 4集群。这种部署方式虽然步骤较多,但提供了最大的灵活性和控制权,适合生产环境使用。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



