背景
我正在努力学习在我的笔记本电脑上使用Jenkins自动部署。当我部署Jenkins时,我没有检查helm图表中的资源设置,结果我过度配置了内存和cpu请求。
吊舱初始化了几分钟,然后最终进入CrashLoopBackOf状态。
软件和版本
$ minikube start
😄 minikube v1.17.1 on Microsoft Windows 10 Enterprise 10.0.19042 Build 19042
...
...
🐳 Preparing Kubernetes v1.20.2 on Docker 20.10.2
...
请注意,Docker是在启用Docker Desktop和Windows 10 WSL Ubuntu 20.04 LTS的情况下从Visual Studio Code安装的。
$ helm version
version.BuildInfo{Version:"v3.5.2", GitCommit:"167aac70832d3a384f65f9745335e9fb40169dc2", GitTreeState:"dirty", GoVersion:"go1.15.7"}
安装
$ helm repo add stable https://charts.jenkins.io
$ helm repo ls
NAME URL
stable https://charts.jenkins.io
$ kubectl create namespace devops-cicd
namespace/devops-cicd created
$ helm install jenkins stable/jenkins --namespace devops-cicd
$ kubectl get svc -n devops-cicd -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
jenkins ClusterIP 10.108.169.104 <none> 8080/TCP 7m1s app.kubernetes.io/component=jenkins-controller,app.kubernetes.io/instance=jenkins
jenkins-agent ClusterIP 10.103.213.213 <none> 50000/TCP 7m app.kubernetes.io/component=jenkins-controller,app.kubernetes.io/instance=jenkins
$ kubectl get pod -n devops-cicd --output wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
jenkins-0 1/2 Running 1 8m13s 172.17.0.10 minikube <none> <none>
吊舱最终失败,以CrashLoopBackOff 状态结束
不幸的是,我忘了提取吊舱的日志。
在完全公开的情况下,我通过将图表拉到本地文件系统并将内存和cpu设置的大小减半,成功地部署了它。
问题
我担心有一天生产环境中会出现资源调配过度的情况。那么,如何阻止一个失败的pod重新部署/重新启动和撤消/回滚部署呢?
我尝试将部署副本设置为0,但没有效果。事实上,我能看到的唯一资源是几个服务、Pod本身、一个PersistentVolume和一些秘密。
我不得不删除名称空间来删除pod。这并不理想。那么,解决这种情况的最佳方法是什么(即只处理有问题的吊舱)?
根据我收集的反馈,并确认吊舱由StatefulSet
调度。我试图回答我自己的问题,希望它对像我这样的新手有用
我的问题是如何阻止吊舱(重新悬浮)。
所以在这里我得到了StatefulSet:的信息
$ kubectl get statefulsets -n devops-cicd -o wide
NAME READY AGE CONTAINERS IMAGES
jenkins 0/1 33s jenkins,config-reload jenkins/jenkins:2.303.1-jdk11,kiwigrid/k8s-sidecar:1.12.2
然后放大:
$ kubectl scale statefulset jenkins --replicas=0 -n devops-cicd
statefulset.apps/jenkins scaled
结果:
$ kubectl get statefulsets -n devops-cicd -o wide
NAME READY AGE CONTAINERS IMAGES
jenkins 0/0 6m35s jenkins,config-reload jenkins/jenkins:2.303.1-jdk11,kiwigrid/k8s-sidecar:1.12.2