Antes de configurar OpenShift y NCP, tenga en cuenta la siguiente información.

  • Un pod no puede tener más de 11 etiquetas y un espacio de nombres no debe tener más de 12.

  • NCP excluirá las etiquetas que se agregan para el uso interno de OpenShift, por ejemplo, una etiqueta con el prefijo openshift.io en la clave. Por lo tanto, los usuarios no verán las etiquetas creadas de los recursos de NSX relacionados. A continuación presentamos una lista de prefijos de etiquetas que usa OpenShift. No debe usar ninguna clave de etiqueta que comience por uno de los siguientes valores:

        openshift.io
        pod-template
  • Los nodos necesitarán acceder a los pods, por ejemplo, para realizar comprobaciones de estado de Kubelet. Asegúrese de que la interfaz de administración del host pueda acceder a la red de pods.

  • Los atacantes pueden aprovechar las funciones NET_ADMIN y NET_RAW de Linux para poner en peligro la red de pods. Debe deshabilitar estas dos funciones de contenedores en los que no confía. De forma predeterminada, si SCC está restringida y es anyuid, no se otorga NET_ADMIN. Tenga en cuenta que existen ciertas SCC que habilitan explícitamente NET_ADMIN o ejecutan el pod en modo privilegiado. Además, en los contenedores en los que no confía, cree una SCC independiente, basada, por ejemplo, en una SCC anyuid, con la función NET_RAW eliminada. Esto se puede hacer agregando NET_RAW a la lista "requiredDropCapabilities" de la definición de SCC.

  • Permita el acceso raíz a los pods y los contenedores (solo para hacer pruebas). Los comandos que aparecen a continuación requerirán acceso raíz en todos los pods del proyecto oc en el que tiene la sesión iniciada en este momento.

        oc new-project test-project
        oc project test-project
        oc adm policy add-scc-to-user anyuid -z default
  • Configure (agregue) el registro de OpenShift.

        oc login -u system:admin -n default
        oc adm registry --service-account=registry --config=/etc/origin/master/admin.kubeconfig
  • Eliminar el registro de OpenShift

        oc login -u system:admin -n default
        oc delete svc/docker-registry dc/docker-registry
  • No existe ninguna regla del firewall IPtables que permita solicitudes DNS desde los contenedores de puente de Docker predeterminados al proceso dnsmasq del nodo. Debe abrirse manualmente. Edite /etc/sysconfig/iptables y agregue las siguientes reglas en la parte inferior del archivo, antes de COMMIT:

        -A OS_FIREWALL_ALLOW -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
        -A OS_FIREWALL_ALLOW -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
        COMMIT
  • Reinicie iptables, docker y origin-node (se reinician kube-proxy y kubelet).

        systemctl restart iptables
        systemctl restart docker
        systemctl restart origin-node
  • Para que OpenShift funcione, es necesario que el registro docker interno de OpenShift pueda usar protocolos que no sean TLS. Normalmente, el instalador OpenShift Ansible debe agregar esto automáticamente, pero parece que en estos momentos no está funcionando. Edite /etc/sysconfig/docker y agregue:

        INSECURE_REGISTRY='--insecure-registry 172.30.0.0/16'
  • Reinicie Docker.

    systemctl restart docker
  • La compatibilidad de NCP para las directivas de red es la misma que la compatibilidad que proporciona Kubernetes y depende de la versión de Kubernetes que utilice OpenShift.

    • En OpenShift 3.9, las cláusulas de reglas en la directiva de red pueden contener como máximo un selector de namespaceSelector, podSelector y ipBlock.

  • El servidor de la API de Kubernetes no realiza una validación de una especificación de directiva de red. Es posible crear una directiva de red que no sea válida. NCP rechazará dicha directiva de red. Aunque actualice la directiva de red para que sea válida, NCP no la procesará. Debe eliminar la directiva de red y volver a crear una con una especificación válida.

  • Determinadas versiones de Kubernetes tienen un problema relacionado con subPath (consulte https://github.com/kubernetes/kubernetes/issues/61076). Si la versión de OpenShift no contiene una solución para este problema, se producirá un error en la creación del pod NCP y aparecerá el mensaje CreateContainerConfigError: no se pudo preparar subruta de acceso para volumeMount. Puede solucionar este problema si elimina el uso de subPath desde el archivo yaml NCP. Específicamente, elimine la línea que contenga subPath: ncp.ini y reemplace la configuración de volumes con lo siguiente:

        volumes:
          - name: config-volume
            # ConfigMap nsx-ncp-config is expected to supply ncp.ini
            configMap:
              name: nsx-ncp-config
              items:
                - key: ncp.ini
                  path: ncp.ini

    Un efecto secundario de este cambio es que el directorio /etc/nsx-ujo completo se vuelve de solo lectura. Como resultado, la conexión con NSX-T mediante certificado y clave privada no funcionará, ya que NCP no podrá crear un archivo temporal en /etc/nsx-ujo para mover el certificado y la clave privada a un solo archivo.

  • Si ejecuta el clúster de OpenShift 3.10 o va a actualizar a este, tenga en cuenta lo siguiente:

    • Debe especificar la configuración de grupos de nodos específicos del clúster de OpenShift 3.10. Debe facilitarse la configuración del mapa de configuración de nodos en el archivo de hosts de inventario.

    • Todos los hosts definidos en el grupo [nodes] del archivo de hosts de inventario se deben asignar a un nombre de grupo de nodos.

    • La actualización del clúster de OpenShift a partir de un playbook de Ansible puede provocar la pérdida de la red. Asegúrese de agregar la revisión (https://github.com/openshift/openshift-ansible/pull/8016/files#diff-2386e21861da3f95091dbb27d72ca366) en el repositorio openshift-ansible para quitar la detención o la desinstalación de paquetes de Open vSwitch.

  • A partir de OpenShift 3.10, kube-proxy se mueve del servicio openshift-node a DaemonSet. Ya no se inicia de forma predeterminada. Realice los siguientes pasos para iniciar kube-proxy de forma manual (se asume que se clonó el repositorio openshift-ansible):

    • Vaya al directorio openshift-ansible y en [defaults] defina lo siguiente:

          library = roles/lib_utils/library/
    • Cree un archivo create_proxy.yaml en el directorio de playbooks con las siguientes entradas:

          - import_playbook: byo/openshift_facts.yml
          - hosts: masters
            run_once: True
            roles:
              - kube_proxy_and_dns
    • Ejecute el playbook:

          ansible-playbook -i hosts playbooks/create_proxy.yaml

      Verá mensajes de error que indican errores en algunas operaciones. Puede ignorar estos mensajes. Puede comprobar el resultado ejecutando el comando oc get po --all-namespaces.