背景
某客户kubernetes集群新加了一个节点,新节点部署应用后,应用会间歇性unavaliable
,用户访问报503,没有事件消息,主机状态也正常。
排查
初步怀疑是新节点问题,在系统日志/var/log/message
和dmesg
中都未发现相关错误信息,在kubelet中发现以下日志
kubernetes集群时通过rke进行安装,可以在节点上直接执行命令docker logs -f --tail=30 kubelet
查看kubelet日志
E0602 03:18:27.766726 1301 controller.go:136] failed to ensure node lease exists, will retry in 7s, error: an error on the server ("") has prevented the request from succeeding (get leases.coordination.k8s.io k8s-node-dev-6)
E0602 03:18:34.847254 1301 reflector.go:178] k8s.io/client-go/informers/factory.go:135: Failed to list *v1.CSIDriver: an error on the server ("") has prevented the request from succeeding (get csidrivers.storage.k8s.io)
I0602 03:18:39.176996 1301 streamwatcher.go:114] Unexpected EOF during watch stream event decoding: unexpected EOF
E0602 03:18:43.771023 1301 controller.go:136] failed to ensure node lease exists, will retry in 7s, error: an error on the server ("") has prevented the request from succeeding (get leases.coordination.k8s.io k8s-node-dev-6)
Read the rest of this entry
kubernetes , 运维攻坚
背景
某项目kubernetes环境某个应用每隔20分钟左右就会重启一次,时间不固定,但在容器事件里面没有任何记录。
排查
首先怀疑是健康检查没过导致容器自动重启,以下是健康检查的配置
按照该配置,检查间隔30s,不健康阈值60,也就是1800s=30分钟后会标记为不健康,但很快就排除该猜测,理由是
手动调用健康检查是ok的
后台有健康检查的记录,记录显示也都是通过的
如果是健康检查不过的话,事件里面会有记录,这里找不到记录
正常情况下如果kubernetes重启pod那会在事件里记录重启的原因,但事件里面没有任何记录,所以可能不是kubernetes重启的,那么很容易想到一个可能性就是OOM,也就是进程因为内存使用超过限制触发OOM操作系统将其kill掉,查看操作系统日志/var/log/messages
发现以下日志
Read the rest of this entry
kubernetes
介绍
harbor 支持docker compose和helm两种方式进行安装,一般情况下如果是kubernetes运行环境推荐用helm进行安装,如果是纯docker环境建议用docker compose进行安装,本次安装使用helm进行安装,安装版本为
v2.2.1
创建命名空间
harbor包含服务较多,建议单独创建命名空间进行安装,便于后续的管理
apiVersion: v1
kind: Namespace
metadata:
name: harbor
labels:
name: harbor
另存为harbor-namespace.yaml
文件,并执行kubectl apply -f harbor-namespace.yaml
命令进行创建
创建共享目录
目录必须创建在共享存储的介质上面,比如NFS等
mkdir -p /u02/appdata/harbor/registry
mkdir -p /u02/appdata/harbor/chartmuseum
mkdir -p /u02/appdata/harbor/jobservice
mkdir -p /u02/appdata/harbor/database
mkdir -p /u02/appdata/harbor/redis
mkdir -p /u02/appdata/harbor/trivy
chmod 777 /u02/appdata/harbor/registry
chmod 777 /u02/appdata/harbor/chartmuseum
chmod 777 /u02/appdata/harbor/jobservice
chmod 777 /u02/appdata/harbor/database
chmod 777 /u02/appdata/harbor/redis
chmod 777 /u02/appdata/harbor/trivy
Read the rest of this entry
harbor , helm , kubernetes
Rancher安装
执行以下命令安装最新版本rancher
docker run --privileged -d --restart=unless-stopped -p 8080:80 -p 4443:443 rancher/rancher
导入kubernetes集群
rancher docker运行后访问http://host:4443
设置密码即可进入rancher,点击导入集群
选择导入现有的kubernetes集群
Read the rest of this entry
kubernetes , rancher
背景
如果你是通过rke安装kubernetes,并且rke版本在v0.2.0
之前,或者通过rancher安装,并且rancher版本在Rancher v2.0.14、v2.1.9
之前,默认的证书有效期是1年,这实在是个大坑,之后的版本rancher更改为10年,证书过期后对现有的服务不影响,服务依然能正常使用,但无法部署新的服务,并且api server不能提供服务,api server如果无法使用,集群基本就废了。
通过openssl工具查看证书有效期
openssl x509 -in /etc/kubernetes/ssl/kube-apiserver.pem -noout -dates
notBefore=Jan 11 10:17:38 2019 GMT
notAfter=Jan 11 10:17:39 2020 GMT
如果当前日期在notAfter之后,那么很不幸,你的证书过期了,此时kubectl命令不可用
$ kubectl get nodes
Unable to connect to the server: x509: certificate has expired or is not yet valid
Read the rest of this entry
kubernetes
背景
某项目OSB生产环境RFC接口概率性调用失败,大概10次调用就会有一次失败,可以稳定重现,以下是该问题的一些重要信息
封装了1个简单的sap rfc查询接口,没其他逻辑,只返回结果。
1. OSB生产环境节点服务器单机运行,依旧存在问题,每个单机都会出现。
2. OSB生产环境配置连接SAP单个节点IP,依旧存在问题,每个SAP节点都会出现。
3. 重启OSB生产环境服务器后,依然会出现问题。
4. 【重点】使用JAVA写代码 去调用SAP RFC接口,不会出现这个问题。
5. 【重点】OSB的测试环境调用 SAP的测试环境RFC接口,不会出现这个问题。
6. 【重点】OSB的测试环境调用 SAP的生产环境RFC接口,不会出现这个问题。
7. 【重点】OSB的生产环境调用 SAP的测试环境RFC接口,会出现时而请求测试的sap,时而请求生产的sap。也会出现这个not found问题。
看起来很诡异是吧,这也是给这个问题取名幽灵RFC
的原因,但看现象无法做出最基本的可能性判断,没有规律可循。错误日志如下(摘取重要的片段):
Read the rest of this entry
docker , kubernetes