热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

老司机翻车记录两则—关于k8s和vue.js

这两个翻车记录,一个让我端午前干到凌晨一点半,一个让我昨天干到晚上十二点半。一,K8S证书过期本来,

这两个翻车记录,一个让我端午前干到凌晨一点半,一个让我昨天干到晚上十二点半。

一,K8S证书过期

本来,集群是作过主要组件50年过期的,也作了kubelet自动续期的。
但一年之后,kubectl的证书还是过期了。
那个周三的上午,有同事就作了kubectl续期,然后,以为一切搞定。
怎知下午有同事一定要更新k8s集群,无法更新,删除了POD无法自动重建。
于是,开始找各种原因,以为是SA,以为是KUBELET问题,看各种LOG,进入KUBE-SYSTEM的POD看挂载的证书过期。
最后,终于知道,MASTER的证书一年过期,要同时更新三个证书,要同时更新三个证书,要同时更新三个证书!!!
kubectl使用的admin.conf
kube-controller-manager使用的conf
kube-scheduler使用的conf
留下两个技巧:
1,查看证书过期脚本
https://zhuanlan.zhihu.com/p/133828552

CERT_DIR=${CERT_DIR:-/etc/kubernetes/pki}
for i in $(find $CERT_DIR -name '*.crt' -o -name '*.pem'); do
 echo $i
    openssl x509 -enddate -in $i -noout
done
for f in $(ls /etc/kubernetes/{admin,controller-manager,scheduler}.conf); do
 echo $f
    kubectl --kubeconfig $f config view --raw -o jsOnpath='{range .users[*]}{.user.client-certificate-data}{end}' | base64 -d | openssl x509 -enddate -noout
done

kubeadm提供的类似命令(不同版本的话,看help)
kubeadm alpha certs check-expiration
2, 更新证书的操作,使用kubeadm操作,最好一个一个操作,不要renew all,这种,不透明。操作命令类似如下(不同版本有不同):

kubeadm  alpha certs renew admin.conf
kubeadm  alpha certs renew scheduler.conf 
kubeadm  alpha certs renew controller-manager.conf

更新了这三个证书之后,必须要将api,controller-manager,scheduler这几个POD重启,或是删除自动重建,不然,这几个POD里还是挂载了老的过期证书文件,切记切记!

二,Vue.js线上环境不能登陆

这个问题,也是困扰了我两天,本来好好的要完结的项目,使用的vue-element-admin这样的前端管理框架,后端使用go + gin +gorm完成,前后端分离。
在npm run dev时,一切OK,各种爽。
但一旦使用npm run build:prod这样的命令之后,我X,登陆时老是通不过,我看后端登陆有请求,且返回给了前端jwt的token值的。但死活不请求下一个url:getinfo()。
又没招了,找天找地,webpack配置更新,不行,后端fmt.Println,输出信息帮助不大。vue.js的前端各端console.log,输出信息也不大,反正就是Login之后,毛都不作了。
以为是token不能保存本地,废了js-COOKIE,使用Localstorage,还是dev可以,build不行。废了Localstorage,使用SessionStrorage,同样的现象。
不顺啊不顺。
最后最后最后,,想到了mock(),结果神奇了,这个vue-element-admin版本,默认在线上环境启用了mock,而dev环境不使用mock。当然,人家也作为注释说明的。
搞定就好,搞定就好,搞定就好。

vue-admin/src/main.js

/**
 * If you don't want to use mock-server
 * you want to use MockJs for mock api
 * you can execute: mockXHR()
 *
 * Currently MockJs will be used in the production environment,
 * please remove it before going online! ! !
 */
import { mockXHR } from '../mock'
if (process.env.NODE_ENV === 'production') {
  mockXHR()
}

注释掉这段MOCK,一切正常,天下太平,安心过周末。


推荐阅读
author-avatar
xjoliemonicane_934
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有