标签: kubernetes

证书验证忽略通用名称而只检查备用名称?

我有一个证书,CN=*.some.domain然后有备用名称DNS:*.sub1.some.domainDNS:*.sub2.some.domain(还有 2 个这样的)。

我向 kubernetes 中的 nginx-ingress 提供了证书,该证书提供host.some.domain. 它给了我错误:

controller.go:1041] unexpected error validating SSL certificate default/tls-cert for host dwarf30.epiqa.certicon.cz. Reason: x509: certificate is valid for *.sub1.some.domain, *.sub2.some.domain, not host.some.domain
Run Code Online (Sandbox Code Playgroud)

该消息明显没有提及通用名称,它只列出了替代名称。

是我误解了 CN 和 Alternates 如何交互,还是 nginx-ingress 控制器中的问题(注意:helm 坚持安装相当旧的容器版本 0.13.0)?

ssl nginx kubernetes

2
推荐指数
1
解决办法
1134
查看次数

激活 RBAC 和 AAD 集成后,如何授予服务主体对 AKS API 的访问权限?

我需要授予进程(构建管道)对 AKS API 的 RBAC 访问权限以进行部署。但目标 AKS 群集已激活 AAD 集成(如此处所述

我原本希望能够通过简单的服务主体访问 AKS API,但我被重定向到设备登录页面:

$ az login --service-principal  --username [REDACTED]-XXXX-XXXX-XXXX-XXXXXXXXXXXX --password [REDACTED]XXxxXXxxXXxxxXXXxxXXxxXXxx= --tenant [REDACTED]-XXXX-XXXX-XXXX-XXXXXXXXXXXX

$ az aks get-credentials -n oli-aksdemo01 -g oli-aksdemo01
Merged "oli-aksdemo01" as current context in /home/olivier/.kube/config

$ kubectl get nodes
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code C2NP77EGR to authenticate.
Run Code Online (Sandbox Code Playgroud)

:-(

在 Azure 上集成 AAD 的 AKS 群集上对服务主体进行身份验证时,是否有办法避免设备登录页面?

active-directory rbac azure kubernetes

2
推荐指数
1
解决办法
6573
查看次数

为什么我必须多次显式定义标签?

为什么需要多次定义部署的标签?为了快速解释我的问题,我举一个例子。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app
# 1st Time
  labels:
    app: app
    tier: backend
spec:
  selector:
# 2nd Time
    matchLabels:
      app: app
      tier: backend
  template:
    metadata:
# 3rd time
      labels:
        app: app
        tier: backend
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是我真的找不到任何spec.selector.matchlabels存在的充分理由。spec.selector.matchlabels 一定要匹配 spec.template.metadata.labels对吗?

描述:

Pod 的标签选择器。由此选择的 pod 的现有 ReplicaSet 将受到此部署的影响。它必须与 Pod 模板的标签匹配。

那么,如果它们应该固定为 kubernetes 知道的特定值,并且如果其中一个与另一个不匹配,无论如何都会抛出错误,那么为什么必须明确定义它们呢?


我的第二个问题可能有更合理的答案,那就是为什么必须明确定义部署的标签和模板的标签?它们不应该也相互匹配吗?或者是否存在它们可能不匹配的情况?我只是错误地使用它们吗?没有关于它们针对模板标签的使用的明确文档。:/

如果我可能做错或理解错误,请指出!:D

kubernetes

2
推荐指数
1
解决办法
2582
查看次数

如何删除 helm 安装的软件包?

我正在使用 Helm 3 安装 kubernetes 软件包。现在我需要删除/清理已安装的内容,我尝试使用 unintall 但似乎 \xe2\x80\x99s 正在寻找一个版本(不确定它的含义)而不是一个包:

\n\n
$ helm install prometheus stable/prometheus-operator --namespace monit\n$ helm delete prometheus\nError: uninstall: Release not loaded: prometheus: release: not found\n
Run Code Online (Sandbox Code Playgroud)\n\n

当试图列出是否有任何版本时,我什么也没得到!

\n\n
$ helm list\nNAME    NAMESPACE   REVISION    UPDATED STATUS  CHART   APP VERSION\n
Run Code Online (Sandbox Code Playgroud)\n\n

在这种情况下删除普罗米修斯资源的正确方法是什么?

\n

kubernetes helm

2
推荐指数
1
解决办法
1万
查看次数

k8s 中 Postgres 挂载卷错误

我正在尝试在PersistentVolumeClaimGKE 中部署 Postgres。根据此处的描述(请参阅 参考资料PGDATA),建议在安装外部卷时创建一个子目录。所以,这就是我对 PG 部署所做的事情:

spec:
  containers:
    - name: postgres-dev
      image: "postgres:12.1"
      imagePullPolicy: IfNotPresent
      ports:
        - containerPort: 5432
      env:
        - name: PGDATA
          value: "/var/lib/postgresql/data/pgdata"
      volumeMounts:
        - name: postgres-persistent-storage-dev
          mountPath: "/var/lib/postgresql/data/pgdata"
  volumes:
    - name: postgres-persistent-storage-dev
      persistentVolumeClaim:
        claimName: postgres-pvc-dev
Run Code Online (Sandbox Code Playgroud)

/pgdata我在 中创建子目录/postgresql/data,这将是 Postgres 数据的原始挂载点。

但是当我尝试部署 Postgres pod 时,它因退避错误而停止,并且收到以下事件:

Events:
  Type     Reason                  Age               From                                                  Message
  ----     ------                  ----              ----                                                  -------
  Normal   Scheduled               20s               default-scheduler                                     Successfully assigned default/postgres-dev-7f549754d-nm2lf to gke-cluster-pool-1-4ce1e4d6-m33c
  Normal   SuccessfulAttachVolume  15s               attachdetach-controller                               AttachVolume.Attach …
Run Code Online (Sandbox Code Playgroud)

postgresql kubernetes google-kubernetes-engine

2
推荐指数
1
解决办法
6267
查看次数

更新 HA k8s 集群的 apiserver 证书

我有由 kubeadm 创建的 HA k8s 集群。我想更新 API 服务器证书以添加其他 SAN。为此,我遵循了另一篇文章中描述的一些步骤,但我对 HA 集群做了什么:

  • 删除了所有控制平面节点上的API 服务器证书

  • 检索当前的 kubeadm 配置映射

kubectl get configmap kubeadm-config \
  --namespace kube-system \
  --output jsonpath={{ .data.ClusterConfiguration }}
Run Code Online (Sandbox Code Playgroud)
  • 用必要的配置部分扩展它
apiServer:
  certSANs:
    - localhost
    - 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
  • 在所有控制平面节点上生成具有更新配置的新证书

kubeadm init phase certs apiserver --config <config_path>

  • 在所有控制平面节点上重新启动 API 服务器容器

  • 更新了集群内配置

kubeadm init phase upload-config kubeadm --config <config_path>

问题是这些步骤是否正确,或者还有其他更简单的方法吗?

kubernetes kubeadm

2
推荐指数
1
解决办法
3458
查看次数

在k3s中,如何将工作节点提升为主节点?

我目前有一个基于 k3s 的基于 Raspberry Pi 的 Kubernetes 集群,虽然最初是单主集群,但现在已经发展到可以拥有多个(奇数)主节点的程度。

我的问题是 - 特别是关于 k3s - 是否有一个简单的路径可以将现有工作节点提升为主节点,而不是完全删除并重新安装它?

kubernetes k3s

2
推荐指数
1
解决办法
7889
查看次数

Kubernetes Nginx 仅针对两个请求的入口超时

在我们的 k8s 入口配置中,我们将超时设置为 10 分钟并将其应用于所有请求。/my-service/v1/processfile是否可以仅对两个请求(例如和 )配置超时/my-service/v1/cachewarmup

目前我们的配置如下:

---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: my-service
  annotations:
    nginx.ingress.kubernetes.io/proxy-connect-timeout: '600'
    nginx.ingress.kubernetes.io/proxy-send-timeout: '600'
    nginx.ingress.kubernetes.io/proxy-read-timeout: '600'
spec:
  rules:
  - host: my-service-dev1.eus1-devqa.geo.com
    http:
      paths:
      - path: /
        backend:
          serviceName: my-service-svc
          servicePort: 8080
Run Code Online (Sandbox Code Playgroud)

谁能帮我将两个请求的 nginx 入口超时配置为 10 分钟,所有其他请求默认为 1 分钟。

kubernetes nginx-ingress

2
推荐指数
1
解决办法
1万
查看次数

/var/lib/kubelet/pki/kubelet.crt 已过期,如何续订?

kubernetes集群位于 1.21.2。也是kubelet1.21.2

kubelet --version
Kubernetes v1.21.2

kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.2", GitCommit:"092fbfbf53427de67cac1e9fa54aaa09a28371d7", GitTreeState:"clean", BuildDate:"2021-06-16T12:57:56Z", GoVersion:"go1.16.5", Compiler:"gc", Platform:"linux/amd64"}
Run Code Online (Sandbox Code Playgroud)

当我尝试“ kl get no”时,出现以下错误

kl get no
error: You must be logged in to the server (Unauthorized)
**Note: kl is alias of kubectl**
I checked my /var/lib/kubelet/pki/kubelet.crt and it was expired.
Run Code Online (Sandbox Code Playgroud)

在 kubelet.crt 中,发行者如下

Subject: CN=aparapu@1591592441
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
Run Code Online (Sandbox Code Playgroud)

需要帮助来更新此 kubelet.crt。

kubernetes

2
推荐指数
1
解决办法
6433
查看次数

自动为 Bitnami helm Chart postgresql 创建数据库/用户/密码到 K8 中

我正在将https://github.com/bitnami/charts/tree/master/bitnami/postgresql部署到 k8s 中,并想知道如何自动化执行以下操作

  • 创建数据库
  • 创建一个带有密码的角色作为上面数据库的所有者

我已经看到了extraDeploy https://github.com/bitnami/charts/blob/master/bitnami/postgresql/values.yaml#L43 参数,但这似乎会创建一个 k8s 特定资源(不触及 pg)。

我利用的唯一想法extraDeploy是创建一个作业,部署一个自定义 pod,该 pod 将连接到 pg 并创建数据库、角色和密码...

谢谢!

postgresql bitnami kubernetes helm

2
推荐指数
1
解决办法
7075
查看次数