第 7 章 已知问题

  • SKUPPER-1069 - skupper init 在非 OpenShift 集群上失败

    如果您在非 OpenShift 集群上创建站点,您可能会遇到创建站点的问题,但 skupper status 报告 待处理

    如果检查 pod,您可能会看到类似如下的状态:

    $ kubectl get pods
    NAME                                         READY   STATUS                       RESTARTS   AGE
    skupper-router-698478664c-6xq72              0/2     CreateContainerConfigError   0          17s
    skupper-service-controller-698c785d7-dqc8m   0/1     CreateContainerConfigError   0          10s

    要确认您遇到这个问题,请搜索类似如下的 Kubernetes 事件:

    $ kubectl get events| grep Warning
    
    Warning  Failed          17m (x4 over 17m)     kubelet            Error: container has runAsNonRoot and image will run as root

    临时解决方案

    指定用户 id,如下所示:

    $ skupper init --run-as-user 2000

    其中 2000 是您要运行容器的用户的 id。您可以将任何非零数指定为 id。

    如果要使用 YAML 创建站点,您可以在 data 部分指定用户:

      data:
        name: my-site
        run-as-user: "2000"
    注意

    这个临时解决方案不会允许您在此站点上部署 Red Hat Service Interconnect 控制台组件。您必须在 OpenShift 站点上部署控制台组件,直到这个问题被解决为止。

  • SKUPPER-869 - 为 TCP 传输启用闲置连接超时

    如果端点被终止,例如客户端被终止,其他端点会观察到半关闭的连接。如果其他端点没有关闭连接或试图向连接发送数据,Skupper 路由器不会释放分配给该连接的内存

    临时解决方案

    如果可能,请避免使用此行为的客户端服务器配置。例如,如果服务器自动关闭 dormant 连接,或者尝试与客户端通信,则 Skupper 路由器会在客户端终止时释放内存。

  • SKUPPER-805 - skupper init 在 OCP 3.11 上不适用于普通用户。

    临时解决方案

    有两个临时解决方案:

    • 使用 YAML 配置站点。
    • 使用以下权限创建服务帐户来运行 skupper CLI:
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: skupper-non-admin
    rules:
    - apiGroups:
      - ""
      resources:
      - configmaps
      - pods
      - pods/exec
      - services
      - secrets
      - serviceaccounts
      verbs:
      - get
      - list
      - watch
      - create
      - update
      - delete
    - apiGroups:
      - apps
      resources:
      - deployments
      - statefulsets
      - daemonsets
      verbs:
      - get
      - list
      - watch
      - create
      - update
      - delete
    - apiGroups:
      - route.openshift.io
      resources:
      - routes
      verbs:
      - get
      - list
      - watch
      - create
      - delete
    - apiGroups:
      - networking.k8s.io
      resources:
      - ingresses
      - networkpolicies
      verbs:
      - get
      - list
      - watch
      - create
      - delete
    - apiGroups:
      - projectcontour.io
      resources:
      - httpproxies
      verbs:
      - get
      - list
      - watch
      - create
      - delete
    - apiGroups:
      - rbac.authorization.k8s.io
      resources:
      - rolebindings
      - roles
      verbs:
      - get
      - list
      - watch
      - create
      - delete

    您可以将上面的 YAML 保存到 role.yaml 中,应用它并将角色绑定到用户名:

    $ oc apply -f role.yaml
    $  oc policy add-role-to-user skupper-non-admin <username> -n <namespace-name> --role-namespace=<namespace-name>