Authentication 我对Kubernetes的证词有意见。有人能帮助我在尝试连接到群集IP时总是出现此错误吗

Authentication 我对Kubernetes的证词有意见。有人能帮助我在尝试连接到群集IP时总是出现此错误吗,authentication,nginx,kubernetes,Authentication,Nginx,Kubernetes,我和库伯内特斯有问题。我尝试部署我的服务两天了,但我做错了什么 { "kind": "Status", "apiVersion": "v1", "metadata": { }, "status": "Failure", "message": "forbidden: User \"system:anonymous\" cannot get path \"/\": No policy matched.", "reason": "Forbidden", "detail

我和库伯内特斯有问题。我尝试部署我的服务两天了,但我做错了什么

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {

  },
  "status": "Failure",
  "message": "forbidden: User \"system:anonymous\" cannot get path \"/\": No policy matched.",
  "reason": "Forbidden",
  "details": {

  },
  "code": 403
}
有人知道问题出在哪里吗? 这也是我的yaml文件:

# Certificate
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
 name: ${APP_NAME}
spec:
 secretName: ${APP_NAME}-cert
 dnsNames:
   - ${URL}
   - www.${URL}
 acme:
   config:
     - domains:
         - ${URL}
         - www.${URL}
       http01:
         ingressClass: nginx
 issuerRef:
   name: ${CERT_ISSUER}
   kind: ClusterIssuer

---
# Ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ${APP_NAME}
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: 'true'
    nginx.ingress.kubernetes.io/from-to-www-redirect: 'true'
spec:
  tls:
  - secretName: ${APP_NAME}-cert
    hosts:
    - ${URL}
    - www.${URL}
  rules:
  - host: ${URL}
    http:
      paths:
      - backend:
          serviceName: ${APP_NAME}-service
          servicePort: 80

---
# Service
apiVersion: v1
kind: Service
metadata:
  name: ${APP_NAME}-service
  labels:
    app: ${CI_PROJECT_NAME}
spec:
  selector:
    name: ${APP_NAME}
    app: ${CI_PROJECT_NAME}
  ports:
    - name: http
      port: 80
      targetPort: http

---
# Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ${APP_NAME}
  labels:
    app: ${CI_PROJECT_NAME}
spec:
  replicas: ${REPLICAS}
  revisionHistoryLimit: 0
  selector:
    matchLabels:
      app: ${CI_PROJECT_NAME}
  template:
    metadata:
      labels:
        name: ${APP_NAME}
        app: ${CI_PROJECT_NAME}
    spec:
      containers:
        - name: webapp
          image: eu.gcr.io/my-site/my-site.com:latest
          imagePullPolicy: Always
          ports:
            - name: http
              containerPort: 80
          env:
            - name: COMMIT_SHA
              value: ${CI_COMMIT_SHA}
          livenessProbe:
            tcpSocket:
              port: 80
            initialDelaySeconds: 30
            timeoutSeconds: 1
          readinessProbe:
            tcpSocket:
              port: 80
            initialDelaySeconds: 5
            timeoutSeconds: 1
          resources:
            requests:
              memory: '16Mi'
            limits:
              memory: '64Mi'
      imagePullSecrets:
        - name: ${REGISTRY_PULL_SECRET}
有人能帮我吗?我陷入困境,不知道会有什么问题。这也是我的第一个Kubernetes项目

“消息”:“禁止:用户\”系统:匿名\“无法获取路径\”/\“:没有匹配的策略。”,

。。意思就是说:您对kubernetes api的请求没有经过身份验证(这是
系统:匿名
部分),并且您的配置不允许匿名用户向api发出任何请求


这里没有人能够帮助你解决这个问题,因为解决这个问题需要大量的变量。也许可以请您的群集管理员为您提供正确的凭据。

我已经在本文中对此进行了解释。您将需要ServiceAccount、ClusterRole和RoleBinding。你可以在这里找到解释。或者正如马修·丹尼尔在库伯内特斯的文献中提到的那样。
如果仍然存在问题,请提供用于部署集群的方法/教程(因为“Gitlab Kubernetes集成”并不能说明您所使用的方法)。

FWIW,不要将
服务
对象命名为
${APP_name}-Service
;这只意味着您必须键入更多字符,以便在已包含
svc
的命令末尾添加
-service
;所有这些名称都有两个名称空间:每个kubernetes名称空间一次,每个资源类型第二次。因此,您可以拥有名为
foo
服务
和名为
foo
部署
等等。谁构建集群?这个问题主要出现在使用Kelsey Hightowers Kubernetes the hard way manual(至少是旧版本)的自建集群中,因为其中缺少基本RBAC设置。如果您使用像kops这样的部署程序,或者只使用cluster-up.sh,那么这个问题不应该存在。在那里我禁用了RBAC。所以这不应该是个问题,对吧?