rancher Prometheus Error opening query log file: permission denied
本文永久链接: https://www.xtplayer.cn/prometheus/rancher-prometheus-error-opening-query-log-file-permission-denied/ 在 rancher dashboard 启用集群监控时,可能会遇到 prometheus 无法正常运行,报如下的错误。 level=info ts=2020-10-31T12:40:33.171Z caller=main.go:353 msg="Starting Prometheus" version="(version=2.22.0, branch=HEAD, revision=0a7fdd3b76960808c3a91d92267c3d815c1bc354)"level=info ts=2020-10-31T12:40:33.171Z caller=main.go:358 build_context="(go=go1.15.3, user=root@6321101b2c50, date=20201015-12:29 ...
阅读全文rancher rke2 提示错误 init node not found
本文永久链接: https://www.xtplayer.cn/rke2/rancher-rke2-init-node-not-found/ 在 rke2 原生架构中,会先运行第一个 server 节点,这个节点被称为初始节点或者 init node,然后其他节点再根据配置的 server url 向第一个节点进行注册。对于 rancher ui 上创建的自定义 rke2 集群也一样,第一个添加的自定义节点默认会被设置为初始节点(init node),其他节点添加后会自动向第一个节点进行注册。 当需要替换初始节点(init node),正常情况下删除初始节点(init node)后,rancher 会自动随机寻找一个其他正常的 master 节点作为初始节点(init node)。但是这里有个前提条件,就是需要有其他状态为 Active 的正常节点。 如果当前集群只有初始节点(init node),添加了一个新的 master 节点准备替换初始节点(init node)。如果没有等新加的 master 节点状态变为 Active 就执行了删除旧初始节点(init node)的操作,那 ...
阅读全文rke2 Waiting for probes: kube-controller-manager, kube-scheduler
本文永久链接: https://www.xtplayer.cn/rke2/rke2-waiting-for-probes-kube-controller-manager-kube-scheduler/ 问题背景在使用 rancher 部署的自定义 rke2 集群时,可能会出现如下图的状态。即使更新集群配置触发集群更新,此状态也无法消失。 问题分析在 rke2 架构中,每个节点会运行一个 rancher-system-agent 服务。可执行 systemctl status rancher-system-agent.service 查看服务状态,也可以执行 journalctl -xef -u rancher-system-agent.service 查看服务日志。 默认 rancher-system-agent 服务日志等级为 info,可以通过添加环境变量来提高日志等级。 cat >>/etc/systemd/system/rancher-system-agent.env<<EOFRANCHER_DEBUG=trueCATTLE_DEBUG=trueC ...
阅读全文删除孤立 pod-volume 目录失败
本文永久链接: https://www.xtplayer.cn/longhorn/failure-to-delete-orphaned-pod-volume-directory/ 适用版本所有 Longhorn 版本。 Kubernetes v1.28 版本,向后移植的 PRv1.27正在等待合并。 症状如果工作节点发生故障,在托管活动 Pod 时,随着节点停机并等待恢复,这些 Pod 会被正常驱逐。在此期间,负责管理节点的 kubelet 会每隔两秒生成如下错误消息。 orphaned pod <pod-uid> found, but error not a directory occurred when trying to remove the volumes dirE0810 18:19:37.442065 4092 kubelet_volumes.go:245] "There were many similar errors. Turn up verbosity to see them." err="orphaned pod \ ...
阅读全文配置 rancher rke2 从 http 仓库拉取镜像
本文永久链接: https://www.xtplayer.cn/rancher/rancher-rke2-pulls-image-from-the-http-registries/ 问题背景截止当前 rancher 最新版本 2.7.5,当使用的镜像仓库为 http 访问时,在部署 rke2 时可以看到 rancher-system-agent.service 日志中报 http: server gave HTTP response to HTTPS client,无法正常拉取镜像,比如如下日志 Aug 10 17:56:23 rke2-2 rancher-system-agent[1658]: time="2023-08-10T17:56:23+08:00" level=warning msg="Failed to get image from endpoint: Get \"https://192.168.110.110:80/v2/\": http: server gave HTTP response to HTTPS clie ...
阅读全文Another app is currently holding the xtables lock. Perhaps you want to use the -w option?
本文永久链接: https://www.xtplayer.cn/linux/another-app-is-currently-holding-the-xtables-lock/ 有时候当我们执行 iptables 命令时候可能会报 Another app is currently holding the xtables lock. Perhaps you want to use the -w option? 在 iptables 客户端进行写 iptables 规则的时候,会短时间的锁住 xtables lock,以防止其他客户端同事写成造成冲突。正常情况下,这个锁定时间会非常短暂。当出现截图问题时,说明其他进程还一直锁住 xtables lock 并未释放,从而会导致其他 iptables 客户端无法正常写 iptables 规则。如果是在 k8s 环境,因为网络驱动会进行 iptables 规则的更新,如果 xtables lock 被锁住导致 iptables 规则无法更新,从而导致跨节点集群网络不可互通。 解决方法 可以通过执行 ps -fp $(pidof ipt ...
阅读全文设置 ingress 默认 ssl cert
本文永久链接: https://www.xtplayer.cn/ingress/set-ingress-default-ssl-cert/ rke1 创建 ingress default ssl cert secret kubectl -n ingress-nginx \ create secret tls ingress-default-cert \ --cert=mycert.cert --key=mycert.key 编辑集群 YAML,在 ingress 配置下添加如下 extra_args 参数 ingress: provider: "nginx" extra_args: default-ssl-certificate: "ingress-nginx/ingress-default-cert" 重启 ingress pod kubectl delete pod -l app=ingress-nginx -n ingress-nginx rke2 在 kube-system 命名空间下创建一个名为 custom ...
阅读全文持久化 ingress 自定义配置
本文永久链接: https://www.xtplayer.cn/ingress/persistent-ingress-custom-configuration/ ingress 控制器的某些配置需要在 system 项目下修改 ingress-nginx-controller 配置映射来实现,在 rancher-rke 集群中,ingress 由 rancher 运行的一个 job 来负责安装和更新。虽然手动修改配置映射的方式可以临时生效,在 k8s 集群进行大版本更新时,会触发 job 的重新运行,从而会覆盖之前的所有自定义配置。要持久化配置,需要通过以下方法固定配置。 RKE1 在 rke1 集群的 YAML 配置中,找到 ingress 层级,然后在 options 中添加自定义配置。示例配置如下: ingress: default_backend: false http_port: 0 https_port: 0 options: access-log-path: /var/log/nginx/nginx_access.log ...
阅读全文持久化 coredns 自定义配置
本文永久链接: https://www.xtplayer.cn/coredns/persistent-coredns-custom-configuration/ 根据之前的文章 coreDNS 加速外部域名解析 和 coredns 解析外部域名 了解到,如果需要访问集群外部一个没有 dns 解析的域名,可以通过修改 coredns 配置映射文件,使用 coredns 的 hosts 插件进行配置解析。 以上通过手动修改配置映射的方式可以临时生效,在 rancher-rke 集群中,coredns 由 rancher 运行的一个 job 来负责安装和更新。在 k8s 集群进行大版本更新时,会触发 job 的重新运行,从而会覆盖之前的所有自定义配置。要持久化配置,需要通过以下方法固定配置。 RKE1 在 rke1 集群的 YAML 配置中,将 coredns 的完整配置以 addons 的方式添加。 rancher_kubernetes_engine_config: addon_job_timeout: 45 addons: |- --- apiVersion: v1 ...
阅读全文Unexpected EOF during watch stream event decoding
本文永久链接: https://www.xtplayer.cn/kubernetes/unexpected-eof-during-watch-stream-event-decoding/ 在 rke 部署的 k8s 集群架构中,只有 worker 角色的节点,会在节点上以 host 网络模式运行一个 nginx-proxy 容器,这个容器代理到 apiserver 服务然后保留 6443 端口以供节点上的 k8s 组件连接(比如 kubelet、kube-proxy)。节点上的 kubelet 容器等 k8s 组件,会直接通过连接 https://127.0.0.1:6443 的方式来了解 apiserver。 因此在 kubelet 或者 kube-proxy 组件中可以看到类似如下的信息。 I0806 14:27:53.862021 5166 streamwatcher.go:103] Unexpected EOF during watch stream event decoding: unexpected EOFI0806 14:27:53.863139 5166 ...
阅读全文rancher 2.6 logging output alyun oss
本文永久链接: https://www.xtplayer.cn/rancher/rancher-2-6-logging-output-alyun-oss-example/ 参考 https://kube-logging.dev/docs/configuration/plugins/outputs/secret/ 创建授权密文 apiVersion: v1kind: Secrettype: Opaquemetadata: annotations: logging.banzaicloud.io/default: watched name: oss-auth-secret namespace: cattle-logging-systemdata: username: <base64 加密> password: <base64 加密> 创建 ClusterOutput,oss 插件配置参数参考 https://kube-logging.dev/docs/configuration/plugins/outputs/oss/ ,buffer 配置参数参 ...
阅读全文rancher 2.6 版本项目用户查看监控指标
本文永久链接: https://www.xtplayer.cn/rancher/rancher-2-6-project-user-view-monitor-metric/ 在给项目添加成员时,可以添加项目所有者、项目成员、项目只读用户,或者自定义的某些项目权限。 有时候可能需要项目用户也可以查看应用的监控图表,但默认配置下以上的这些权限都无法查看应用的监控指标。为了满足这个需求,我们需要自定义一个集群权限。 操作方法 在 用户&认证|角色 中创建一个集群角色,授予 services/proxy 资源的 create 和 get 权限。 也可以使用以下的 YAML 文件直接在 local 集群创建。 apiVersion: management.cattle.io/v3builtin: falsecontext: clusterdescription: show-metricdisplayName: show-metricexternal: falsehidden: falsekind: RoleTemplatemetadata: annotations ...
阅读全文Failed to start ContainerManager failed to build map of initial containers from runtime: no PodsandBox found with Id
本文永久链接: https://www.xtplayer.cn/kubernetes/no-podsandbox-found/ 根据 issue https://github.com/kubernetes/kubelet/issues/21 说明,在相对较老的 k8s 版本中,当从 runtimeservice 收到不一致的容器列表时,Kubelet 进入循环重启状态。在 kubelet 日志中可以看到如下的错误信息,这些错误信息会持续的循环打印 {"log":"F0609 16:18:40.349779 48606 kubelet.go:1386] Failed to start ContainerManager failed to build map of initial containers from runtime: no PodsandBox found with Id 'ad00f282abdb54fbb90b357ae79e9aeeb89ca33054fca207c2ca7c1522a742d3'\n&qu ...
阅读全文rke2 coredns 自定义配置
本文永久链接: https://www.xtplayer.cn/rke2/rke2-coredns-custom-config/ 在部署 rke2 集群后,会自动部署一个 cluster agent 服务去连接 rancher server。对于内部没有 dns 服务器的开发环境,这个时候查看 cluster agent pod 日志,就会出现以下的错误日志: 可能你在主机的 /etc/hosts 中配置了 HostAliases,但是因为 cluster agent 是 pod/容器运行,它无法读取到主机的 HostAliases。 为了避免 cluster agent 无法连接 rancher server 导致 rke2 集群不可用,rke2 增加了自定义 corends 配置的功能。 执行以下命令查看 coredns 默认配置 root@rke2-1:~# kubectl -n kube-system get configmaps rke2-coredns-rke2-coredns -oyamlapiVersion: v1data ...
阅读全文rke2 节点初始化
本文永久链接: https://www.xtplayer.cn/rke2/rke2-node-init/ 在 rke2 集群创建后,没有把 rke2 bin 目录添加到主机环境变量,在节点维护时需要通过完全路径或者切换到指定的目录下才能执行对应的命令。并且也未把 kubectl 和 crictl 配置文件放在默认路径。以至于执行 kubectl 或者 crictl 需要指定配置文件路径。 为了方便后期维护,以下脚本可以对 rke2 节点进行简单的初始化,仅供参考。 #!/bin/bash# 如果是离线环境,则在此处定义内部 dns 服务器 ip,一行一个。NAMESERVER_LIST="114.114.114.114223.5.5.5"docker_check(){ if [ $( which dockerd >> /dev/null 2>&1; echo ${?} ) = 0 ]; then echo "rke2 节点中不建议同时运行 docker 服务,建议卸载 dock ...
阅读全文rke2 常用命令
本文永久链接: https://www.xtplayer.cn/rke2/rke2-common-command/ Installcurl -sL https://get.rke2.io | shsystemctl daemon-reloadsystemctl start rke2-server Various exploration/debug commmands for RKE2 binariesls -1 /var/lib/rancher/rke2/bin/*/var/lib/rancher/rke2/bin/containerd/var/lib/rancher/rke2/bin/containerd-shim/var/lib/rancher/rke2/bin/containerd-shim-runc-v1/var/lib/rancher/rke2/bin/containerd-shim-runc-v2/var/lib/rancher/rke2/bin/crictl/var/lib/rancher/rke2/bin/ctr/var/lib/rancher/rke2/ ...
阅读全文Rancher Logging v2 启用与配置优化
本文永久链接: https://www.xtplayer.cn/rancher/rancher-logging-v2-configuration-optimization/ 从 Rancher v2.6.x 开始,原来的 rancher logging v1 功能将被弃用, Banzai Cloud Logging operator 将取代原来的日志搜集功能。 Banzai Cloud Logging Operator 工作原理Logging Operator 自动部署和配置 Kubernetes 日志流水线。它会在每个节点上部署和配置一个 Fluent Bit DaemonSet,从而收集节点文件系统中的容器和应用程序日志。 Fluent Bit 查询 Kubernetes API 并使用 pod 的元数据来丰富日志,然后将日志和元数据都传输到 Fluentd。Fluentd 会接收和过滤日志并将日志传输到多个Output。 以下自定义资源用于定义了如何过滤日志并将日志发送到 Output: Flow 是一个命名空间自定义资源,它使用过滤器和选择器将日志消息路由到对应的 Outp ...
阅读全文ClusterUnavailable 503 cluster not found
本文永久链接: https://www.xtplayer.cn/rancher/clusterunavailable-503-cluster-not-found/ 如图所示,在升级到 rancher v2.5.16之后,可能会出现点击集群无法进入集群首页,rancher ui 一直卡住,接着页面右上角出现 ClusterUnavailable 503 cluster not found 的错误提示。 查看 rancher pod 可以看到以下的错误日志: {"log":"2022/10/25 12:31:48 [ERROR] failed on subscribe storageClass: ClusterUnavailable 503: ClusterUnavailable 503: cluster not found\r\n","stream":"stdout","time":"2022-10-25T12:31:48.660186963Z" ...
阅读全文Waiting for node to register. Either cluster is not ready for registering or etcd and controlplane node have to be registered first
本文永久链接: https://www.xtplayer.cn/rancher/waiting-for-node-to-register-either-cluster-is-not-ready-for-registering-or-etcd-and-controlplane-node-have-to-be-registered-first/ INFO: Environment: CATTLE_ADDRESS=10.1xx.xx.xx CATTLE_AGENT_CONNECT=true CATTLE_CA_CHECKSUM=99e6ccda7c91855xxxxxxxxx4f760c0278713b95b30ab0616b66df1a CATTLE_CLUSTER=false CATTLE_INTERNAL_ADDRESS= CATTLE_K8S_MANAGED=true CATTLE_NODE_NAME=cncxxxx060vl CATTLE_SERVER=https://rancher.xxxx.comINFO: Using resolv.conf: nameserver 10.1 ...
阅读全文如何查看 MySQL 数据库容量大小,表容量大小,索引容量大小?
本文永久链接: https://www.xtplayer.cn/mysql/how-to-get-the-sizes-of-the-tables-of-a-mysql-database/ 查看 MySQL「所有库」的容量大小SELECT table_schema as '数据库',sum(table_rows) as '记录数',sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)',sum(truncate(DATA_FREE/1024/1024, 2)) as '碎片占用(MB)'from information_schema.tablesgroup by table_schemaorder by sum(data_length) desc, sum(index_length) desc; 特别提示:data_leng ...
阅读全文node-agent 报错 Either cluster is not ready for registering, cluster is currently provisioning, or etcd, controlplane and worker node have to be registered
本文永久链接: https://www.xtplayer.cn/rancher/either-cluster-is-not-ready-for-registering/ 问题背景某天一客户突然反馈 rancher local 集群节点 32G 内存资源耗尽,local 集群中只运行了 rancher 相关业务。 经过一系列排查,发现耗尽内存的是 k8s apiserver 进程。在 apiserver 容器日志中发现了大量以下日志: {"log":"I0507 08:24:37.492998 1 pathrecorder.go:253] kube-apiserver: \"/apis/management.cattle.io/v3/namespaces/c-dql6k/nodes/machine-h46dc\" satisfied by NotFoundHandler\n","stream":"stderr","time":"2022 ...
阅读全文