当前位置:   article > 正文

istio pod不启动及访问报RBAC错误问题解决

istio pod不启动及访问报RBAC错误问题解决

istio pod不启动问题解决

kubernetes集群中安装istio之后,在创建的depoyment中已经使用了注入注解sidecar.istio.io/inject: 'true’配置,但是istio pod不创建,代码示例如下

kind: Deployment
apiVersion: apps/v1
metadata:
  name: name-a
  namespace: namespace-a
  labels:
    app: xxxx
    app.kubernetes.io/name: xxx
    app.kubernetes.io/version: v1
    version: v1
  annotations:
    deployment.kubernetes.io/revision: '5'
    servicemesh.kubesphere.io/enabled: 'true'
spec:
  replicas: 1
  selector:
    matchLabels:
      app: xxxx
      app.kubernetes.io/name: xxx
      app.kubernetes.io/version: v1
      version: v1
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: xxxx
        app.kubernetes.io/name: xxx
        app.kubernetes.io/version: v1
        version: v1
      annotations:
        cni.projectcalico.org/ipv4pools: '["default-ipv4-ippool"]'
        kubesphere.io/restartedAt: '2024-03-01T05:44:45.617Z'
        sidecar.istio.io/inject: 'true'
    spec:
      containers:
        - name: xxx-v1
          image: image-a:0.0.1
          ports:
            - name: http-8080
              containerPort: 8080
              protocol: TCP
          resources:
            limits:
              cpu: '2'
              memory: 4Gi
              nvidia.com/gpu: '0'
            requests:
              nvidia.com/gpu: '0'
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: Always
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      serviceAccountName: default
      serviceAccount: default
      securityContext: {}
      imagePullSecrets:
        - name: harbor-secret
      schedulerName: default-scheduler
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67

经排查对命名空间namespace-a需要设置注解属性为enabled.
查看命令

kubectl get namespace -L istio-injection
  • 1

查看各个命名空间是否镜像istio-injection注解的设置。

使用一下命令对命名空间属性进行配置

kubectl label namespace namespace-a istio-injection=enabled
  • 1

RBAC: access denied 问题解决

部分参考 https://cloud.tencent.com/document/product/1261/62949

经过以上修改后,istio pod可以自动创建起来,但是访问报错 RBAC: access denied。
这里要查看授权策略,授权策略用于配置网格、namespace、服务/Workload 范围的访问管理规则。您可以通过 AuthorizationPolicy CRD 配置授权规则。AuthorizationPolicy 主要包含以下部分:

  • selector:指定策略的生效范围。
  • action:指定该策略是 ALLOW 策略还是 DENY 策略。
  • rules:授权规则主体,由from,to,where 3 部分构成。
    • from:指定请求的来源特征。
    • to:指定请求的操作特征。
    • when:指定授权规则的生效条件。

当有 AuthorizationPolicy 的 ALLOW 和 DENY 策略应用于同一范围时,DNEY 策略的优先级高于 ALLOW 策略,生效的规则如下:

  1. 如请求匹配任何一条 DENY 策略,则拒绝该请求的访问。
  2. 如该范围没有任何 ALLOW 策略,则允许该请求的访问。
  3. 如当前该范围存在 ALLOW 策略,且请求匹配到了任何一条 ALLOW 策略,则允许该请求的访问。
  4. 拒绝该请求的访问。
    在这里插入图片描述
    执行命令
    kubectl get AuthorizationPolicy -A
    查看所有的授权策略,发现在istio-system空间下,有一个global-deny-all的策略。使用以下命令删除。
    kubectl delete AuthorizationPolicy -n istio-system global-deny-all

问题解决。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/181732
推荐阅读
相关标签
  

闽ICP备14008679号