CloudNative 架构

CloudNative|云原生应用架构|云原生架构|容器化架构|微服务架构|平台架构|基础架构


  • 首页

  • 标签

  • 分类

  • 归档

  • k8s离线安装包

  • 搜索

调试golang的bug以及性能问题的实践方法

发表于 2020-05-11 | 分类于 golang , debug | | 热度: ℃
字数统计: 5,277 字 | 阅读时长 ≈ 26 分钟

场景1: 如何分析程序的运行时间与CPU利用率情况?

shell内置time指令

这个方法不算新颖,但是确很实用。 time是Unix/Linux内置多命令,使用时一般不用传过多参数,直接跟上需要调试多程序即可。

1
2
3
4
5
6
$ time go run test2.go 
&{{0 0} 张三 0}

real 0m0.843s
user 0m0.216s
sys 0m0.389s

上面是使用time对 go run test2.go 对执行程序坐了性能分析,得到3个指标。

  • real:从程序开始到结束,实际度过的时间;
  • user:程序在用户态度过的时间;
  • sys:程序在内核态度过的时间

一般情况下 real >= user + sys,因为系统还有其它进程(切换其他进程中间对于本进程回有空白期)。

阅读全文 »

Kubernetes Etcd 数据备份与恢复

发表于 2020-05-09 | 分类于 kubernetes , etcd | | 热度: ℃
字数统计: 814 字 | 阅读时长 ≈ 4 分钟

系统环境

Etcd 版本:3.4.3
Kubernetes 版本:1.17.4
Kubernetes 安装方式:Kubeadm

简介

Kubernetes 使用 Etcd 数据库实时存储集群中的数据,可以说 Etcd 是 Kubernetes 的核心组件,犹如人类的大脑。如果 Etcd 数据损坏将导致 Kubernetes 不可用,在生产环境中 Etcd 数据是一定要做好高可用与数据备份,这里介绍下如何备份与恢复 Etcd 数据。

备份 Etcd 数据

采用镜像方式部署的 Etcd,所以操作 Etcd 需要使用 Etcd 镜像提供的 Etcdctl 工具。如果你是非镜像方式部署 Etcd,可以直接使用 Etcdctl 命令备份数据。

运行 Etcd 镜像,并且使用镜像内部的 etcdctl 工具连接 etcd 集群,执行数据快照备份:

  • /bin/sh -c:执行 shell 命令
  • –env:设置环境变量,指定 etcdctl 工具使用的 API 版本
  • -v:docker 挂载选项,用于挂载 Etcd 证书相关目录以及备份数据存放的目录
  • –cacert:etcd CA 证书
  • –key:etcd 客户端证书 key
  • –cert:etcd 客户端证书 crt
  • –endpoints:指定 ETCD 连接地址
  • etcdctl snapshot save:etcd 数据备份
1
2
3
4
5
6
7
8
9
10
$ docker run --rm                                    \
-v /data/backup:/backup \
-v /etc/kubernetes/pki/etcd:/etc/kubernetes/pki/etcd \
--env ETCDCTL_API=3 \
k8s.gcr.io/etcd:3.4.3-0 \
/bin/sh -c "etcdctl --endpoints=https://192.168.2.11:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--key=/etc/kubernetes/pki/etcd/healthcheck-client.key \
--cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt \
snapshot save /backup/etcd-snapshot.db"

阅读全文 »

Kubeadm 添加新 Master 节点到集群出现 ETCD 健康检查失败错误

发表于 2020-05-09 | 分类于 kubernetes , kubeadm | | 热度: ℃
字数统计: 1,090 字 | 阅读时长 ≈ 5 分钟

系统环境

Docker 版本:18.06.3
Kubeadm 版本:1.17.4
Kubernetes 版本:1.17.4
Kubernetes Master 数量:3
Kubernetes 安装方式:Kubeadm

问题描述

Kubernetes 集群中总共有三台 Master,分别是:

k8s-master-2-11、k8s-master-2-12、k8s-master-2-13

对其中 k8s-master-2-11 Master 节点服务器进行了内核和软件升级操作,从而先将其暂时剔出集群,然后进行升级,完成后准备重新加入到 Kubernetes 集群,通过 Kubeadm 执行,输入下面命令:

1
2
3
4
$ kubeadm join mydlq.club:16443 \
--token 6w0nwi.zag57qgfcdhi76vd \
--discovery-token-ca-cert-hash sha256:efa49231e4ffd836ff996921741c98ac4c5655dc729d7c32aa48c608232f0f08 \
--control-plane --certificate-key a64e9da7346153bd64dba1e5126a644a97fdb63c878bb73de07911d1add8e26b

在执行过程中,输出下面日志,提示 etcd 监控检查失败:

1
2
3
4
5
6
7
8
9
10
......
[control-plane] Creating static Pod manifest for "kube-controller-manager"
W0329 00:01:51.364121 19209 manifests.go:214] the default kube-apiserver authorization-mode is "Node,RBAC"; using "Node,RBAC"
[control-plane] Creating static Pod manifest for "kube-scheduler"
W0329 00:01:51.373807 19209 manifests.go:214] the default kube-apiserver authorization-mode is "Node,RBAC"; using "Node,RBAC"
[check-etcd] Checking that the etcd cluster is healthy

error execution phase check-etcd: etcd cluster is not healthy: failed to dial endpoint https://10.8.18.105:2379
with maintenance client: context deadline exceeded
To see the stack trace of this error execute with --v=5 or higher

根据关键信息 "error execution phase check-etcd" 可知,可能是在执行加入 etcd 时候出现的错误,导致 master 无法加入原先的 kubernetes 集群。

阅读全文 »

kubernetes 1.18+ 使用ipvs后coredns无法解析域名采坑记

发表于 2020-05-09 | 分类于 kubernetes , coredns , ipvs | | 热度: ℃
字数统计: 4,918 字 | 阅读时长 ≈ 24 分钟

环境现象

CoreDNS 版本:1.6.7
Docker 版本:18.06.3-ce
Kubernetes 版本:1.18.1
操作系统版本:CentOS 7.x
CentOS 内核版本:3.10.0-693.2.2.el7.x86_64

问题现象

由于最近要向组内演示 Istio 1.5,故在云服务器上安装了kubernetes 1.18.1 (使用ipvs) 来配合 Istio 1.5 的演示,kubernetes 与 istio 安装完后一切顺利,bookinfo demo跑的也非常的顺利。但在一次重启整个集群后,一切都变的不那么美好了。istio-proxy起不来了,提示pilot not ready,更可悲的是service name 无法解析了,导致很多服务之间的调用都没法正常工作,有依赖的服务都不能正常启动了,为了更好的定位问题,于是卸载 Istio 1.5,重新回到k8s 1.18.1上,在一步步排查中发现,在pod中使用pod ip相互访问是可以的,由此判断,初步怀疑很可能是 DNS 出现了问题,后来慢慢发现 kube-proxy 中的错误,再定位到 IPVS parseIP Error 错误,再到解决问题。以下是整个问题定位分析

阅读全文 »

kubernetes 在 aws 上的应用

发表于 2020-01-08 | 分类于 kubernetes , cloud | | 热度: ℃
字数统计: 2,228 字 | 阅读时长 ≈ 8 分钟

kubernetes in aws Overview(EKS)

eks_in_aws

阅读全文 »
1…91011…22
icyboy

icyboy

109 日志
98 分类
182 标签
RSS
GitHub 微博 知乎
友情链接
  • 张家港水蜜桃
  • 运维开发
  • DevOps
© 2016 — 2021 icyboy | Site words total count: 330.8k
本站访客数:
博客全站共330.8k字