D域能力开放平台运维

测试环境和生产环境结构是一样的:

国信的容器云、redis、mysql双主和集成的mysql主从用的是一个集群,redis、mysql双主、mysql主从用的是一个broker一个catalog,容器云是一个独立的,租户从云门户同步过来是一个租户一个namespace,不知道容器云和catalog那个建namespace快,慢的发现已经有namespace就会冲突报错,需要租户同步进去时先判断一下,报错如下:

租户底层资源初始化失败

D域能力开放平台运维_第1张图片

生产环境:

10.168.26.10生产kubectl所在服务器mcloud密码2w#E4r%T6y&Uqwas

查看K8s节点状态:kubectl get node

D域能力开放平台运维_第2张图片

访问dashboard地址:

https://10.168.26.9:9090

管理员令牌:

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWd2dHJiIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI2MGY3M2UwNy00NTYzLTExZTktOWQxYy02YzkyYmZjNDU0ODQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.M-59rlfjOYGr83Px1qX2PL-onfA8YLEFqLXnspvLcoKysuZJuLimjaY0To2o7JyIvOFtMPrpJAZ09K2VOfit6omlXskbgKhCrxqVl9UKFwH8_rHpnK5Hc_7_AXme8H-kpyZKtRsrHhVvH-aYxIxh7TpNkjA_qDdWFjXX2VUQn9zVpt0sx0wtwC2ODdvPuqSIgpF-UDD931gB9Jn1Ep0GJ_Wez6HdSjSJtOdHbSclfEzQjveZB0Yi2SIOtMkqd3rl2NuEZVFr5C-EdlWW9oXsfzZj2fdCaUmP2v66iRzdKoKOgMiiqprfcFSOq2B3TFSxv7zzHm6sdBiZMOoGoFUZrg

用户令牌

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJvcmRpbmFyeS11c2VyLXRva2VuLXRrNnh3Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6Im9yZGluYXJ5LXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI2NGQ4MGRhYi00NTYzLTExZTktOWQxYy02YzkyYmZjNDU0ODQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06b3JkaW5hcnktdXNlciJ9.z5ZSLL1SANmvtNuw2n8EBwYSy3iyGbVcxgJTm-WYIMG1E5i81tbxiWvLHMxBReTB9inqOzXP_nkTpgyUenxjnbb8fLsCTMKSyNA3A7G-diaOG0Blw58L1b1IceJ-r9YRrRSsXLse16YgEbI-r0CpO4fXdPvZPmL8rK_cvc1GrVn1uwN1FadBuewXLHpqMnSrQB5O90HCNrmFRVAJHWoL2LJisYuJUGgBWfR7AaevHED1H9HbxLous_MPS6muwiSdo8lzawiY2PeJoN103qgRmtLWhfl4cU02c055zoTVuDx2M-fDnwiASIGbaI_x9gFwiJIVRd3sHGKaqtrMIqEXlQ

测试环境:

10.168.26.2\3\4  mcloud  2w#E4r%T6y&Uqwas

lvm是在每个node节点上装,master节点不安装(创建mysql主从的随机分配到node上),

10.168.26.2这台机器就没有装lvm,所以调度不上,是有vg,但是没有装flexvolume插件,vg已经创建好了,装一下插件就可以了。一般有这个目录就是装了的,没有这个目录就是没装

查看k8s集群节点状态:

D域能力开放平台运维_第3张图片

1.查看mysql实例状态;都处于running

2.访问dashboard确认从pod本地连接mysql可行

http://10.236.0.79:8088/CUDOP/D-DCOS/broker/self-broker/backend/docs/blob/master/%E8%BF%90%E7%BB%B4%E6%96%87%E6%A1%A3/%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C-D%E5%9F%9F%E8%83%BD%E5%8A%9B%E5%BC%80%E6%94%BE%E5%B9%B3%E5%8F%B0.md

运维手册-D域能力开放平台

1、mysqlha-1m1s拉起异常

问题描述:在内部开发环境的liuc204命名空间下,尝试拉起一个名为ha1m1s-lc的mysqlha-1m1s实例,该实例长时间未能创建成功。

错误定位办法:

登录配有该环境的kubectl的服务器(10.236.5.12),通过kubectl命令查看该实例。发现该实例的ha1m1s-lc-mysqlha-1m1s-self-dashboard长时间处于init状态。

kubectl -n liuc204 get pod | grep ha1m1s-lc

kubectl -n nium get pod -o wide| grep i2292

kubectl delete pod -n nium i2295-mysqlha-1m1s-master-exporter-65bd8d87ff-fztd8

helm list --all | 实例名

D域能力开放平台运维_第4张图片

2、通过kubectl describe命令可以查看到该pod的初始化容器和容器。如下图所示,该pod有一个名为bingding-node的初始化容器,以及名为self-dashboard的普通容器。

kubectl -n liuc204 describe pod ha1m1s-lc-mysqlha-1m1s-self-dashboard-7b588779f8-q7mk4

D域能力开放平台运维_第5张图片

并且可以看到该pod并没有异常事件。

D域能力开放平台运维_第6张图片

3、通过kubectl logs命令查看self-dashboard容器日志和bingding-node的日志,发现bingding-node的日志中有连接被拒绝的异常。

kubectl -n liuc204 logs ha1m1s-lc-mysqlha-1m1s-self-dashboard-7b588779f8-q7mk4 -c self-dashboard

kubectl -n liuc204 logs ha1m1s-lc-mysqlha-1m1s-self-dashboard-7b588779f8-q7mk4 -c bingding-node

D域能力开放平台运维_第7张图片

4、6443端口是kube-apiserver的端口,但是10.236.0.12并不是集群中kube-apiserver的IP,说明配置kube-apiserver出现了错误。ha1m1s-lc-mysqlha-1m1s-self-dashboard是在configmap-self.yaml中配置kube-apiserver的,所以检查chart包中的templates/configmap-self.yaml。

5、检查发现确实是configmap-self.yaml配置错误。

D域能力开放平台运维_第8张图片

原因简介:经过错误定位判断,是chart包中的configmap-self.yaml中的kubeconfig配置错误。

解决办法:

(1)登录chart包所在服务器(10.236.5.12)的对应路径/home/mcloud/developer/liuc204/charts下,修改mysqlha-1m1s中的templates/configmap-self.yaml文件。

(2)修改configmap-self.yaml中关于kubeconfig的配置。将图中红框内容替换为当前集群的kubeconfig。

D域能力开放平台运维_第9张图片

(3)使用helm package命令重新打包,并将新生成的chart包mysqlha-1m1s-0.3.10.tgz上传至harbor中。

helm package mysqlha-1m1s

(4)通过kubectl删除后端服务的pod

kubectl -n liuc204 delete pod self-backend-service-dep-lc-6c7bd5b686-zqzrh

检验方法:

在内部开发环境重新拉起一个mysqlha-1m1s的实例并且拉起成功,则表明问题维护成功。如图所示。

D域能力开放平台运维_第10张图片

二、服务长时间未拉起(mysql超过5分钟,redis超过3分钟)

问题描述:生产环境下,尝试拉起一个名为i1902的mysqlha-1m1s实例,该实例长时间未能创建成功。

服务负责人:秦英瑜

错误定位办法:

(1)查询backend所在pod

kubectl get pod -n d-cmp | grep backend

(2)查看backend service日志

kubectl logs -f  self-backend-service-dep-76d5b8699-7g849

(3)查找拉起失败的实例对应编号(使用ftp的搜索功能),若查不到对应请求,则直接将错误报送至service broker(由山分负责)

(4)若backend收到请求,且有报错信息,可根据报错信息排查问题,下文中异常情况1,2,3是可能出现的报错信息

(5)若backend收到请求,但并没有任何报错信息,则可能是异常情况4

异常情况1: chart包异常

provision:找不到chart包

原因简介:可能是backend service中配置的chart包仓库地址有误

解决办法:

查看/home/mcloud/backend-k8s-d-cmp/deployment.yaml文件

D域能力开放平台运维_第11张图片

进入  CHART_REPO_URL对应仓库地址查看是否有对应镜像(所需镜像的版本可根据报错信息查看)

异常情况2 绑定异常————status:400

bind:json解析异常

原因简介:可能是broker传参时,参数的json不规范或不符合backend service所定义的参数类型(此种情况一般出现于联调阶段,手动调用接口传参时导致参数异常情况)

解决办法:

检查传参内容的json格式是否正确;对照backend service接口文档中的参数类型,检查传参类型是否正确

异常情况3 绑定异常————status:409

bind:重复绑定(解绑)

原因简介:可能由于某种原因,service broker反复调用backend service的绑定(解绑)接口导致(此种情况一般出现于联调阶段,service broker反复调用绑定接口,可请山分协助定位此问题)

异常情况4 磁盘空间不足

后端日志没有任何报错,但查询的实例状态始终是in progress状态(调用get status查询实例接口返回的查询结果)

原因简介:可能是分配主机的磁盘空间不足了

解决办法:

查看该实例所对应的所有pod

kubectl get pod -n demotenant | grep i1009  (i1009是实例名称)

D域能力开放平台运维_第12张图片

如有某一个pod始终为init状态,则查看该pod的拉起日志

kubectl describe pod -n demotenant  i1902-mysqlha-1m2s-master-exporter-55c7dd6765-jg78s

D域能力开放平台运维_第13张图片

此时可以注意到最后一条事件(event)为FaildMount日志信息为:

Unable to mount volumes for pod "qyytestcpu-mysqlha-1m1s-69456fc5f5-tppxb_test-tenant(abe9181b-52c0-11e9-8b63-6c92bfc452b0)": timeout expired waiting for volumes to attach/mount for pod "test-tenant"/"qyytestcpu-mysqlha-1m1s-69456fc5f5-tppxb". list of unattached/unmounted volumes=[qyytestcpu]

由该日志信息可以初步判断为集群磁盘空间不足,清理集群的方法可参考lv操作手册

检验方法:

集群清理后重新拉起一个mysqlha-1m1s的实例,若能拉起成功,则表明问题维护成功。如图所示。

D域能力开放平台运维_第14张图片

三、dashboard打开异常

问题描述:生产环境下,拉起一个名为i1902的mysqlha-1m1s实例,实例的dashboard无法正常访问。

D域能力开放平台运维_第15张图片

错误定位办法:

1.查询实例所在主机

kubectl get pods -n uni018 -o wide | grep i489

2.查询实例前端端口号

get svc -n uni018 | grep i489

D域能力开放平台运维_第16张图片

3.访问前端地址http://10.168.26.7:49495/api可以看到浏览器是可以正常访问的(由于需要单点登录所以会跳转到登录页面,但是出现了页面就说明在集群内打开dashboard页面是没有问题的)

D域能力开放平台运维_第17张图片

此时可以排除dashbard本身的问题,推测可能是F5(负载均衡)出现了问题,可以联系相关负责人定位问题

解决办法:当dashboard打不开时,除了定位问题以外,应第一时间给用户提供访问地址及账号密码

1.访问地址查询方法

查询实例所在主机kubectl get pods -n uni018 -o wide | grep i489

注:主节点为i489-mysqlha-1m1s所对应的ip地址

从节点为i489-mysqlha-1m1s-read1所对应的ip地址查询实例前端端口号get svc -n uni018 | grep i489

D域能力开放平台运维_第18张图片

注:主节点为i489-mysqlha-1m1s所对应的端口地址

从节点为i489-mysqlha-1m1s-read1所对应的端口地址

2.账户名密码查询方法

kubectl get secret -n uni018  | grep i489

kubectl get secret -n uni018  i489-mysqlha-1m1s -o json

D域能力开放平台运维_第19张图片

此为base64的密码 ,需要进行转换

转换指令:

echo "cGFzc3dvcmQ=" | base64 --decode

kubectl get pod -n xiying5 -o wide 查看主从状态以及在哪台机子上,不知道命名空间时

$ kubectl get pods --all-namespaces | grep 实例名 #列出所有namespace中的pod,也可以是services、deployment等

D域能力开放平台运维_第20张图片

然后ssh登录到机子上ssh [email protected],看容器:docker ps -a | grep 实例名

D域能力开放平台运维_第21张图片

mysql\xbackup\filebeat他们三个共享存储,看mysql的错误日志和删除mysql的二进制日志,mysql容器没起来没法进去看或删时(k8s的dashboard容器组显示的日志是起来后报的,没起来是没有日志的),可以进filebeat和xbackup容器里面进行查看和删除,mysql错误日志/var/log/mysql/error.log ,mysql二进制日志在xbackup容器中的/var/lib/mysql目录下

进去容器:docker exec -it 283372f73fd8 bash

docker exec -it 容器id bash

接下来操作和在虚拟机上操作方法是一样的。

k8s的dashboard的配置字典是配置文件信息

D域能力开放平台运维_第22张图片

集群里任何ip加上此实例前端服务端口查看mysql dashboard
http://10.236.10.135:50407/

kubectl get svc -n xiying5 | grep 243

kubectl get svc -n xiying5 | grep 实例名

D域能力开放平台运维_第23张图片

查看所有命名空间

图片发自App

你可能感兴趣的:(D域能力开放平台运维)