Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

18.3. 安装 VMware NSX-T

先决条件

  • ESXi 主机要求:

    • 托管 OpenShift Container Platform 节点虚拟机的 ESXi 服务器必须是 NSX-T 传输节点。

      图 18.1. NSX UI 为典型的高可用性环境分离传输节点:

      NSX 传输节点
  • DNS 要求:

    • 您必须在 DNS 服务器中向基础架构节点使用通配符添加新条目。这允许 NSX-T 或其他第三方 LoadBalancer 进行负载均衡。在下面的 hosts 文件中,条目由 openshift_master_default_subdomain 变量定义。
    • 您必须使用 openshift_master_cluster_hostnameopenshift_master_cluster_public_hostname 变量更新您的 DNS 服务器。
  • 虚拟机要求:

    • OpenShift Container Platform 节点虚拟机必须有两个 vNIC:
    • 管理 vNIC 必须连接到连接到管理 T1 路由器的逻辑交换机。
    • 所有虚拟机上的第二个 vNIC 必须标记 NSX-T,以便 NSX Container Plug-in(NCP)知道哪个端口需要用作特定 OpenShift Container Platform 节点上运行的所有 Pod 的父 VIF。标签必须如下:

      {'ncp/node_name': 'node_name'}
      {'ncp/cluster': 'cluster_name'}

      下图显示了所有节点的 NSX UI 中的标签。对于大规模集群,您可以使用 API 调用或使用 Ansible 自动标记。

      图 18.2. NSX UI 显示节点标签

      NSX VM 标签

      NSX UI 中的标签顺序与 API 相反。节点名称必须与 kubelet 预期相同,集群名称必须与 Ansible 主机文件中的 nsx_openshift_cluster_name 相同,如下所示。确保每个节点上的第二个 vNIC 中应用正确的标签。

  • NSX-T 要求:

    在 NSX 中需要满足以下先决条件:

    • Tier-0 路由器.
    • Overlay Transport Zone.
    • POD 网络的 IP 块。
    • (可选)用于路由(NoNAT) POD 网络的 IP 块。
    • SNAT 的 IP 池。默认情况下,每个项目从 Pod 网络 IP Block 指定的子网只能在 NSX-T 中路由。NCP 使用这个 IP 池提供与外部的连接。
    • (可选)dFW(分发防火墙)中的 top 和 Bottom 防火墙部分。NCP 在这两个部分之间放置 Kubernetes 网络策略规则。
    • Open vSwitch 和 CNI 插件 RPM 需要托管在 HTTP 服务器中,可从 OpenShift Container Platform 节点虚拟机访问(在这个示例中为 http://websrv.example.com)。这些文件包含在 NCP Tar 文件中,您可以在 Download NSX Container Plug-in 2.4.0 从 VMware 下载。
  • OpenShift Container Platform 要求:

    • 运行以下命令,为 OpenShift Container Platform 安装所需的软件包(若有):

      $ ansible-playbook -i hosts openshift-ansible/playbooks/prerequisites.yml
    • 确保所有节点上本地下载 NCP 容器镜像
    • prerequisites.yml playbook 成功执行后,在所有节点上运行以下命令,将 xxx 替换为 NCP 构建版本:

      $ docker load -i nsx-ncp-rhel-xxx.tar

      例如:

      $ docker load -i nsx-ncp-rhel-2.4.0.12511604.tar
    • 获取镜像名称并重新标记它:

      $ docker images
      $ docker image tag registry.local/xxxxx/nsx-ncp-rhel nsx-ncp 1
      1
      xxx 替换为 NCP 构建版本。例如:
      docker image tag registry.local/2.4.0.12511604/nsx-ncp-rhel nsx-ncp
    • 在 OpenShift Container Platform Ansible 主机文件中,指定以下参数,将 NSX-T 设置为网络插件:

      [OSEv3:children]
      masters
      nodes
      etcd
      
      [OSEv3:vars]
      ansible_ssh_user=root
      openshift_deployment_type=origin
      openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}]
      openshift_master_htpasswd_users={"admin" : "$apr1$H0QeP6oX$HHdscz5gqMdtTcT5eoCJ20"}
      openshift_master_default_subdomain=demo.example.com
      openshift_use_nsx=true
      os_sdn_network_plugin_name=cni
      openshift_use_openshift_sdn=false
      openshift_node_sdn_mtu=1500
      openshift_master_cluster_method=native
      openshift_master_cluster_hostname=master01.example.com
      openshift_master_cluster_public_hostname=master01.example.com
      openshift_hosted_manage_registry=true
      openshift_hosted_manage_router=true
      openshift_enable_service_catalog=true
      openshift_cluster_monitoring_operator_install=true
      openshift_web_console_install=true
      openshift_console_install=true
      
      # NSX-T specific configuration
      #nsx_use_loadbalancer=false
      nsx_openshift_cluster_name='cluster01'
      nsx_api_managers='nsxmgr.example.com'
      nsx_api_user='nsx_admin'
      nsx_api_password='nsx_api_password_example'
      nsx_tier0_router='LR-Tier-0'
      nsx_overlay_transport_zone='TZ-Overlay'
      nsx_container_ip_block='pod-networking'
      nsx_no_snat_ip_block='pod-nonat'
      nsx_external_ip_pool='pod-external'
      nsx_top_fw_section='containers-top'
      nsx_bottom_fw_section='containers-bottom'
      nsx_ovs_uplink_port='ens224'
      nsx_cni_url='http://websrv.example.com/nsx-cni-buildversion.x86_64.rpm'
      nsx_ovs_url='http://websrv.example.com/openvswitch-buildversion.rhel75-1.x86_64.rpm'
      nsx_kmod_ovs_url='http://websrv.example.com/kmod-openvswitch-buildversion.rhel75-1.el7.x86_64.rpm'
      nsx_insecure_ssl=true
      # vSphere Cloud Provider
      #openshift_cloudprovider_kind=vsphere
      #openshift_cloudprovider_vsphere_username='administrator@example.com'
      #openshift_cloudprovider_vsphere_password='viadmin_password'
      #openshift_cloudprovider_vsphere_host='vcsa.example.com'
      #openshift_cloudprovider_vsphere_datacenter='Example-Datacenter'
      #openshift_cloudprovider_vsphere_cluster='example-Cluster'
      #openshift_cloudprovider_vsphere_resource_pool='ocp'
      #openshift_cloudprovider_vsphere_datastore='example-Datastore-name'
      #openshift_cloudprovider_vsphere_folder='ocp'
      
      [masters]
      master01.example.com
      master02.example.com
      master03.example.com
      
      [etcd]
      master01.example.com
      master02.example.com
      master03.example.com
      
      [nodes]
      master01.example.com ansible_ssh_host=192.168.220.2 openshift_node_group_name='node-config-master'
      master02.example.com ansible_ssh_host=192.168.220.3 openshift_node_group_name='node-config-master'
      master03.example.com ansible_ssh_host=192.168.220.4 openshift_node_group_name='node-config-master'
      node01.example.com ansible_ssh_host=192.168.220.5 openshift_node_group_name='node-config-infra'
      node02.example.com ansible_ssh_host=192.168.220.6 openshift_node_group_name='node-config-infra'
      node03.example.com ansible_ssh_host=192.168.220.7 openshift_node_group_name='node-config-compute'
      node04.example.com ansible_ssh_host=192.168.220.8 openshift_node_group_name='node-config-compute'

      如需有关 OpenShift Container Platform 安装参数的信息,请参阅 配置清单文件

流程

满足所有先决条件后,您可以部署 NSX Data Center 和 OpenShift Container Platform。

  1. 部署 OpenShift Container Platform 集群:

    $ ansible-playbook -i hosts openshift-ansible/playbooks/deploy_cluster.yml

    如需有关 OpenShift Container Platform 安装的更多信息,请参阅安装 OpenShift Container Platform

  2. 安装完成后,验证 NCP 和 nsx-node-agent Pod 是否正在运行:

    $ oc get pods -o wide -n nsx-system
    NAME                   READY     STATUS    RESTARTS   AGE       IP              NODE                                   NOMINATED NODE
    nsx-ncp-5sggt          1/1       Running   0          1h        192.168.220.8   node04.example.com     <none>
    nsx-node-agent-b8nkm   2/2       Running   0          1h        192.168.220.5   node01.example.com     <none>
    nsx-node-agent-cldks   2/2       Running   0          2h        192.168.220.8   node04.example.com     <none>
    nsx-node-agent-m2p5l   2/2       Running   28         3h        192.168.220.4   master03.example.com   <none>
    nsx-node-agent-pcfd5   2/2       Running   0          1h        192.168.220.7   node03.example.com     <none>
    nsx-node-agent-ptwnq   2/2       Running   26         3h        192.168.220.2   master01.example.com   <none>
    nsx-node-agent-xgh5q   2/2       Running   26         3h        192.168.220.3   master02.example.com   <none>