【发布时间】:2022-03-10 07:29:51
【问题描述】:
我有一个 Kubernetes 部署,它是两个具有不同配置的 ACTIVE ReplicaSet 的 Owner/Parent。
此设置由 Helm 管理。
我尝试制作revisionHistory: 0。这不起作用,因为 ReplicaSet 不是非活动的。这个旧的 ReplicaSet 尝试启动一个 pod,但由于节点上的资源限制,它一直处于挂起状态。
我尝试更新 Deployment,但只更新了新的 ReplicaSet。旧的保持不变。
我也无法删除此 ReplicaSet。这给我带来了很多麻烦。
有人可以帮我解决这个问题吗?
Helm 部署模板 -
apiVersion: apps/v1
kind: Deployment
metadata:
name: example
namespace: kube-system
spec:
selector:
matchLabels:
k8s-app: example
replicas: 1
template:
metadata:
labels:
k8s-app: example
spec:
serviceAccountName: example
nodeSelector:
node-role: example-node
containers:
- name: example
image: example-image:vX.X.X
resources:
requests:
cpu: 100m
ports:
- name: example-port
containerPort: XXXX
- name: example-port-1
containerPort: XXXX
readinessProbe:
httpGet:
path: /example
port: XXXX
initialDelaySeconds: 5
timeoutSeconds: 5
- name: example-sidecar
image: example-image-sidecar:vX.X.X
resources:
limits:
memory: 400Mi
requests:
cpu: 100m
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
command:
- command
- --container=example
- --cpu=200m
- --extra-cpu=10m
- --memory=300Mi
- --extra-memory=2Mi
- --threshold=5
- --deployment=example
堆栈:使用 Kops 和 Helm 2.13.1 部署在 AWS EC2 上的独立 K8
输出 -
kubectl get rs -o wide -n kube-system | grep example
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
example-6d4f99bc54 0 0 0 12h example,example-sidecar example-image:vX.X.X,example-image-sidecar:vX.X.X k8s-app=example,pod-template-hash=6d4f99bc54
example-59d46955b6 0 0 0 13h example,example-sidecar example-image:vX.X.X,example-image-sidecar:vX.X.X k8s-app=example,pod-template-hash=59d46955b6
example-5855866cdb 0 0 0 18h example,example-sidecar example-image:vX.X.X,example-image-sidecar:vX.X.X k8s-app=example,pod-template-hash=5855866cdb
example-ccc5cf5cd0 0 0 0 18h example,example-sidecar example-image:vX.X.X,example-image-sidecar:vX.X.X k8s-app=example,pod-template-hash=ccc5cf5cd
example-66db79f578 1 1 0 19h example,example-sidecar example-image:vX.X.X,example-image-sidecar:vX.X.X k8s-app=example,pod-template-hash=66db79f578
example-759469945f 1 1 1 19h example,example-sidecar example-image:vX.X.X,example-image-sidecar:vX.X.X k8s-app=example,pod-template-hash=759469945f
example-ff8f986960 0 0 0 19h example,example-sidecar example-image:vX.X.X,example-image-sidecar:vX.X.X k8s-app=example,pod-template-hash=ff8f98696
kubectl describe deployments example -n kube-system
Name: example
Namespace: kube-system
CreationTimestamp: Tue, 03 Mar 2020 00:48:18 +0530
Labels: k8s-app=example
Annotations: deployment.kubernetes.io/revision: 27
Selector: k8s-app=example
Replicas: 1 desired | 1 updated | 2 total | 1 available | 1 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: k8s-app=example
Service Account: example
Containers:
example:
Image: example-image:vX.X.X
Ports: 8080/TCP, 8081/TCP
Host Ports: 0/TCP, 0/TCP
Limits:
cpu: 1630m
memory: 586Mi
Requests:
cpu: 1630m
memory: 586Mi
Readiness: http-get http://:8080/healthz delay=5s timeout=5s period=10s #success=1 #failure=3
Environment: <none>
Mounts: <none>
example-sidecar:
Image: example-image-sidecar:vX.X.X
Port: <none>
Host Port: <none>
Command:
command
--container=example
--cpu=200m
--extra-cpu=10m
--memory=300Mi
--extra-memory=2Mi
--threshold=5
--deployment=example
Limits:
memory: 400Mi
Requests:
cpu: 100m
Environment:
MY_POD_NAME: (v1:metadata.name)
MY_POD_NAMESPACE: (v1:metadata.namespace)
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
OldReplicaSets: example-759469945f (1/1 replicas created)
NewReplicaSet: example-66db79f578 (1/1 replicas created)
Events: <none>
kubectl rollout history deployments example -n kube-system
deployment.extensions/example
REVISION CHANGE-CAUSE
1 <none>
16 <none>
17 <none>
21 <none>
24 <none>
26 <none>
27 <none>
【问题讨论】:
-
当您尝试删除 ReplicaSet 时究竟会发生什么以及您尝试删除它的具体方式是什么?以及在
kube-system命名空间中创建Deployment的原因是什么? -
@Nick 当我删除 ReplicaSet 时,会立即启动一个具有相同名称/ID 的新副本。我使用
kubectl -n kube-system delete rs example-rs-name。此外,该应用程序位于 kube-system 命名空间中,因为该应用程序与 kubernetes 管理相关而不与产品相关。我们在 K8s 中为产品应用程序提供了不同的命名空间。 -
你使用的是 Helm 2 还是 Helm 3?
-
另外,如果你已经通过 Helm 安装了那个 rs - 请尝试通过 helm 而不是通过 kubectl 删除它
-
@Nick 我正在使用 helm 2.13.1。我尝试删除整个 Helm Chart 并启动整个 Helm Chart。问题依然存在。
标签: kubernetes kubernetes-helm