常用命令是:
## 获取指定命名空间(rubikt)下所有的部署的服务 kubectl.exe get deployments --namespace rubikt ## 获取制定命名空间(rubikt)下所有的容器 kubectl.exe get pods --namespace rubikt ## 获取指定命名空间(rubikt)下所有的副本集 kubectl.exe get replicaset --namespace rubikt ## 删除指定(dynamic-698c8f6857-7ds2s)容器 kubectl.exe delete pod dynamic-698c8f6857-7ds2s --namespace=rubikt --grace-period=0 --force ## 删除指定(render-sample-68768d58fc)副本集 kubectl.exe delete replicaset render-sample-68768d58fc --namespace=rubikt --grace-period=0 --force
最近在新的k8s上部署了一套测试环境服务,简单记录一下部署心得:
1. 使用helm将服务部署到k8s之后,有些服务起不来,或者报错 Back-off restarting failed container:
由于容器会随着异常而销毁,所以通过日志面板可能看不出异常或者异常日志被动态刷新,要进入容器内部通过命令查看日志文件,可以发现,大部分服务出现这个问题都是因为配置有误,比如Apollo的appId写错导致拿不到配置项。
使用命令将异常的pod删除之后,发现有些还是会不断的自动重启,这是副本集在起作用,查看所在命名空间下的所有的副本集
$ kubectl.exe get replicaset --namespace rubikt NAME DESIRED CURRENT READY AGE application-7dc7cb5c 1 1 1 175m appointment-69d89997fb 1 1 1 168m config-6c67cf9775 1 1 1 21m dynamic-676fbd4997 1 1 1 21m feedback-556b79d684 1 1 1 51m gateway-7c5f5dc7c5 1 1 1 56m hospital-599cdd5b89 1 1 1 3h2m message-77c9865b66 1 1 1 30m message-send-76c8d9d956 1 1 1 50m open-api-588b66d67f 1 1 1 27m open-web-5f76c45554 1 1 1 22m pangu-5d59b759d7 1 1 1 31d patient-7cc7f9b49b 1 1 1 47h patientorder-7495d6bb5b 1 1 1 31m payment-5bcd9c887b 1 1 1 33m price-inquiry-8dfcb85c6 1 1 1 29m render-sample-68768d58fc 0 0 0 32m render-sample-6fdb887f97 1 1 1 25s schedule-f7b64db9 1 1 1 49m user-799c49bf9c 1 1 1 54m wechat-7b75b75cdf 1 1 1 26m
可以发现有些服务只设置一个实例,但是有两个副本,主要是副本指向的服务的镜像版本不一致导致的,比如render-sample有两个实例,所以需要删除低版本的服务副本(可以根据副本存活时长进行删除,删除AGE大的)
$ kubectl.exe delete replicaset render-sample-68768d58fc --namespace=rubikt --grace-period=0 --force warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely. replicaset.extensions "render-sample-68768d58fc" force deleted
配置修改好,多余的副本全部删除之后(按理副本应该是可以自动删除的,但是目前我是手动删除),容器组就清爽多了,启动的所有容器都是当下各服务的最新版: