我有一个证书,CN=*.some.domain然后有备用名称DNS:*.sub1.some.domain,DNS:*.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)?
我需要授予进程(构建管道)对 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 群集上对服务主体进行身份验证时,是否有办法避免设备登录页面?
为什么需要多次定义部署的标签?为了快速解释我的问题,我举一个例子。
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
我正在使用 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\nRun Code Online (Sandbox Code Playgroud)\n\n当试图列出是否有任何版本时,我什么也没得到!
\n\n$ helm list\nNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION\nRun Code Online (Sandbox Code Playgroud)\n\n在这种情况下删除普罗米修斯资源的正确方法是什么?
\n我正在尝试在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) 我有由 kubeadm 创建的 HA k8s 集群。我想更新 API 服务器证书以添加其他 SAN。为此,我遵循了另一篇文章中描述的一些步骤,但我对 HA 集群做了什么:
删除了所有控制平面节点上的API 服务器证书
检索当前的 kubeadm 配置映射
Run Code Online (Sandbox Code Playgroud)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
kubeadm init phase certs apiserver --config <config_path>
在所有控制平面节点上重新启动 API 服务器容器
更新了集群内配置
kubeadm init phase upload-config kubeadm --config <config_path>
问题是这些步骤是否正确,或者还有其他更简单的方法吗?
我目前有一个基于 k3s 的基于 Raspberry Pi 的 Kubernetes 集群,虽然最初是单主集群,但现在已经发展到可以拥有多个(奇数)主节点的程度。
我的问题是 - 特别是关于 k3s - 是否有一个简单的路径可以将现有工作节点提升为主节点,而不是完全删除并重新安装它?
在我们的 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集群位于 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。
我正在将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 并创建数据库、角色和密码...
谢谢!
kubernetes ×10
helm ×2
postgresql ×2
azure ×1
bitnami ×1
k3s ×1
kubeadm ×1
nginx ×1
rbac ×1
ssl ×1