go - 使用配置文件连接到 Kubernetes 服务器时处理错误
问题描述
我故意破坏了我的 .config 文件,该文件负责通过更改用户部分中的内容连接到 kubernetes 服务器,我收到此错误:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x45756e]
goroutine 1 [running]:
k8s.io/client-go/kubernetes.NewForConfig(0x0, 0x0, 0xc42031c120, 0x1c)
/home/saivamsi/go/src/k8s.io/client-go/kubernetes/clientset.go:371 +0x4e
exit status 2
我这样做是为了测试如果提供了某种无效的配置会发生什么,所以我想通过在接下来的 5 秒内重试连接到服务器来处理这个错误以查看它是否存在。我怎样才能做到这一点?
我正在使用带有此代码的 kubernetes go 客户端来建立连接:
var KubeConfigPath = os.Getenv("HOME") + "/.kube/config2"
var config, ConfigErr = clientcmd.BuildConfigFromFlags("", KubeConfigPath)
var clientset, ClientErr = kubernetes.NewForConfig(config)
解决方案
如果您检查来自 BuildConfigFromFlags 的错误是否不为零,则可以避免段错误。如果为 nil 则休眠并重试,否则继续。
推荐阅读
- c# - 有没有办法从未在其中创建标签的事件处理程序更改 Windows.Forms.Label 的属性?
- flutter - 错误:错误状态:调用关闭后无法添加新事件
- c++ - 模板类型参数的编译错误模板参数必须是类型priority_queue?
- python - 过滤数据帧的索引,该索引首先在任何地方包含某个字符,然后在任何地方包含另一个字符(例如,首先是“1”,然后是“3”),python
- javascript - 如何从通过 XMLHttpRequest 获得的 json 中获取值?
- kubernetes - 通过公共 url 访问部署在 eks 上的超集
- c# - 使用 yield 生成随机数会在调试模式下更改其值
- ios - 使用 YogaKit 时出现 PNChart 显示问题
- reactjs - 图像未显示在反应中
- wind-river-workbench - 为什么WindRiver diab 编译器的输出在Windows 和Linux 主机之间存在差异?