kubectl 没有 restart pod 这个命令,主要是由于在 k8s 中pod 的管理属于rs 等控制器,并不需要手动维护,但有时更新了yaml文件后,期望破都能够”重启”重新加载yaml文件,比如修改了configmap 的配置文件后,希望重启pod 加载配置,此时就需要 “重启” Pod。而”重启”准确地来说是重建pod,但给用户的感觉是重启。
方法一:kubectl rollout restart
上述命令会重建这个deployment下的 pod,和滚动升级类似,不会一次性杀死Pod,比较平滑。
kubectl rollout restart deployment <deployment_name> -n <namespace>
方法二:kubectl scale
此方法存在风险,不建议使用。其流程是先将副本调成 0,然后再改回目的副本数,会中断服务。
kubectl scale deployment <deployment name> -n <namespace> --replicas=0
kubectl scale deployment <deployment name> -n <namespace> --replicas=10
方法三:kubectl delete pod
删除pod重建,单不建议并行删除全部pod,建议一个一个串行删除,至少保留一个pod可用,常用于删除一个pod(多pod情况下)。
kubectl delete pod <pod_name> -n <namespace>
方法四:kubectl replace
通过更新Pod ,从触发k8s pod 的更新。
kubectl get pod <pod_name> -n <namespace> -o yaml | kubectl replace --force -f -
方法五:kubectl set env
通过 设置环境变量,其实也是更新pod spec 从而触发滚动升级。
kubectl set env deployment <deployment name> -n <namespace> DEPLOY_DATE="$(date)"
通过API 更新pod spec 后也会触发滚动升级 。
方法六:kill 1
在容器里面 kill 1 号进程,但是有个局限,必须要求1 号进程要 捕获 TERM 信号,否则在容器里面是杀不死1号进程的。
kubec`tl exec -it <pod_name> -c <container_name> --/bin/sh -c "kill 1"
查看k8s证书时间及可信IP
openssl x509 -in apiserver.crt -noout -enddate
opnessl x509 -in apiserver.crt -noout -text
# 找到证书的CERTIFICATE文件
openssl x509 -in ca.crt -noout -dates
notBefore=Apr 19 07:45:42 2020 GMT # 证书颁发时间
notAfter=Apr 17 07:45:42 2030 GMT # 证书失效时间
补充:
生成证书
$ openssl genrsa -out ca.key 4096
$ openssl req -new -x509 -days 7304 -key ca.key -out ca.crt
openssl genrsa -out server.key 1024
openssl req -new -key server.key -out server.csr
openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650
文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/9786