0%

开启慢查询日志

-- 查询慢查询日志开启状态
mysql> show variables like 'slow_query%';
+---------------------+-------------------------------+
| Variable_name       | Value                         |
+---------------------+-------------------------------+
| slow_query_log      | ON                            |
| slow_query_log_file | /var/lib/mysql/data3-slow.log |
+---------------------+-------------------------------+
2 rows in set
-- 开启慢查询日志记录
set global slow_query_log=1;
-- 查询慢查询时间
mysql> show variables like 'long_query_time%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
-- 修改慢查询时间,修改后需要重新建立会话才能看到最新设置的值
set global long_query_time=5;

慢查询输出

-- 查看默认输出,默认输出到文件,性能较高
mysql> show variables like '%log_output%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+
1 row in set
-- 可以设置输出到表
set global log_output='TABLE';
select * from mysql.slow_log;

其它配置

-- 开启这个配置,可以将未使用索引的查询也记录到日志
mysql> show variables like 'log_queries_not_using_indexes';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF   |
+-------------------------------+-------+
1 row in set (0.00 sec)
-- 开启配置
mysql> set global log_queries_not_using_indexes=1;

获取istio-proxy所有配置

kubectl -n test exec auhss-v1-769dc687ff-479r4 -c istio-proxy -- curl http://localhost:15000/config_dump > test.json

配置istio-proxy日志级别为debug

# -n 名空间
# server-v1-6dfd6b9846-c2ch6 容器名
kubectl -n mgec  exec server-v1-6dfd6b9846-c2ch6  -c istio-proxy -- curl -XPOST -s -o /dev/null http://localhost:15000/logging?level=debug
# 通过pod注解方式设置日志级别
template:
    metadata:
      annotations:
        sidecar.istio.io/logLevel: debug

查看Prometheus收集的istio指标

istio_requests_total{response_flags="UC", response_code="503", reporter="destination"}

简介

  • Kubernetes的高可用持久化存储
  • 简单的增量快照和备份
  • 跨集群灾难恢复

安装环境要求

# 运行这个命令检查环境
curl -sSfL https://raw.githubusercontent.com/longhorn/longhorn/v1.2.3/scripts/environment_check.sh | bash
# 所有节点安装必要依赖
yum install iscsi-initiator-utils
yum install nfs-utils
yum install jq -y
# 使用helm安装Longhorn
helm repo add longhorn https://charts.longhorn.io
helm repo update
helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace
kubectl -n longhorn-system get pod

查看charts默认配置:helm inspect values longhorn/longhorn
修改默认值:helm install longhorn longhorn/longhorn –namespace longhorn-system –create-namespace –set persistence.defaultClassReplicaCount=1

使用

直接在Longhorn-UI上操作使用

设置备份URL

longhorn备份PV目前支持s3nfs,打开UI选择Setting,选择General,下拉选择Backup Target,填写NFS服务器地址,格式nfs://172.16.100.13:/data/nfs.

说明

一般在机房或者云上使用ECS自建Kubernetes集群是无法使用LoadBalancer类型的Service。因为Kubernetes本身没有为裸机群集提供网络负载均衡器的实现。自建的Kubernetes集群暴露让外网访问,目前只能使用NodePortIngress等的方法进行服务暴露.
有没有方法,让自建的Kubernetes集群也能使用LoadBalancer类型的Service?这里使用OPENELB实现这个功能.

OPENELB部署

OPENELB使用

两种模式

  • Layer 2 模式
  • BGP 模式

华为云使用

网络控制台 -> 子网 -> 选择自己的子网 -> IP地址管理 -> 申请虚拟IP地址.
申请好虚拟IP地址后,就可以在OPENELB创建EIP池时填上申请的虚拟IP.

参考Layer2模式为service分配了IP后,在华为云上还只能在内网访问,如果想公网访问还需要为这个虚拟IP绑定公网IP绑定服务器网卡.

说明

nfs-client的chart已经迁移到https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/,但是该chart对应的镜像都放在k8s.gcr.io,国内不方便下载.

本文继续使用以前的chart.

安装步骤

  1. 添加repo
helm repo add stable https://charts.helm.sh/stable
  1. 更新repo
helm repo update
  1. 安装nfs-client
# 这里nfs server参考centos nfs安装
helm install nfs  stable/nfs-client-provisioner  --set nfs.server=172.16.100.13 --set nfs.path=/data/nfs
  1. 设置nfs为默认存储
[root@node1 ~]# kubectl get sc
NAME         PROVISIONER                                RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
nfs-client   cluster.local/nfs-nfs-client-provisioner   Delete          Immediate           true                   30s
[root@node1 ~]# kubectl patch storageclass nfs-client -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
storageclass.storage.k8s.io/nfs-client patched
[root@node1 ~]# kubectl get sc
NAME                   PROVISIONER                                RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
nfs-client (default)   cluster.local/nfs-nfs-client-provisioner   Delete          Immediate           true                   118s

遇到的问题

k8s-v1.21.5版本安装完nfs-client,创建pvc会一直在pending状态,kubectl logs nfs-client-provisioner后台有报错

unexpected error getting claim reference: selfLink was empty, can't make reference
  1. 临时解决方法:
    编辑/etc/kubernetes/manifests/kube-apiserver.yaml,在这里:
spec:
  containers:
  - command:
    - kube-apiserver

添加这一行:
- --feature-gates=RemoveSelfLink=false

然后应用它,即可

kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml
  1. 解决方案
    参考issue,升级nfs-client-provisioner镜像到v4.0以上版本.
# 一个可用的版本
easzlab/nfs-subdir-external-provisioner:v4.0.1

[root@master ~]# helm list -n  istio-system
NAME           	NAMESPACE   	REVISION	UPDATED                                	STATUS  	CHART                 	APP VERSION
jaeger-operator	istio-system	7       	2021-11-18 15:49:10.783153039 +0800 CST	deployed	jaeger-operator-2.26.0	1.27.0     
kiali-operator 	istio-system	4       	2021-11-18 15:36:24.945838387 +0800 CST	deployed	kiali-operator-1.38.1 	v1.38.1    
[root@master ~]# helm history -n istio-system jaeger-operator
REVISION	UPDATED                 	STATUS    	CHART                 	APP VERSION	DESCRIPTION    
1       	Wed Aug 25 13:39:38 2021	superseded	jaeger-operator-2.14.2	1.17.1     	Install complete              
2       	Mon Nov 15 11:11:58 2021	superseded	jaeger-operator-2.26.0	1.27.0     	Upgrade complete     
3       	Thu Nov 18 15:37:13 2021	superseded	jaeger-operator-2.14.2	1.17.1     	Rollback to 1      
[root@master ~]#  helm rollback -n istio-system jaeger-operator 2
Rollback was a success! Happy Helming!