常见问题解答:PilotGo-plugin-llmops使用过程中的15个高频问题
常见问题解答PilotGo-plugin-llmops使用过程中的15个高频问题【免费下载链接】PilotGo-plugin-llmopsLLM-assisted cluster fault analysis, inspection, and operation and maintenance management.项目地址: https://gitcode.com/openeuler/PilotGo-plugin-llmops前往项目官网免费下载https://ar.openeuler.org/ar/PilotGo-plugin-llmops是一款基于LLM的集群故障分析、检查和运维管理工具旨在帮助用户更高效地进行多集群Kubernetes日常运维与交付。本文整理了用户在使用过程中最常遇到的15个问题并提供详细解决方案。一、环境配置相关问题1. 如何正确设置KUBECONFIG环境变量KUBECONFIG环境变量用于指定kubectl读取的kubeconfig文件路径支持多个文件以冒号/分号分隔是跨平台通用的配置方式。Linux/macOS系统# 查看当前配置 export KUBECONFIG/path/to/config # 合并多个kubeconfig文件 export KUBECONFIG~/.kube/config:~/.kube/another-config # 验证配置生效 kubectl config get-contexts kubectl config current-contextWindows系统(PowerShell)# 设置KUBECONFIG环境变量 $env:KUBECONFIGC:\Users\YourName\.kube\config # 验证配置生效 kubectl config get-contexts注意设置KUBECONFIG后kubectl会优先使用此环境变量指定的配置文件而非默认的~/.kube/config。2. 多集群环境下如何避免操作错误推荐固定流程先确认再执行# 1) 列出所有集群context kubectl config get-contexts # 2) 查看当前context必须确认 kubectl config current-context # 3) 针对目标操作显式指定--context多集群强烈建议 kubectl --context ctx get ns如果用户没有给出context必须先通过问题/线索推断或要求提供至少给出候选列表与风险提醒再进入后续步骤。二、安装部署相关问题3. Linux平台如何安装kubelet/kubeadm/kubectl方法一使用官方源安装推荐Ubuntu/Debian系统# 更新apt并安装依赖 sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl gpg # 添加Kubernetes官方仓库 mkdir -p -m 755 /etc/apt/keyrings curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg echo deb [signed-by/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ / | sudo tee /etc/apt/sources.list.d/kubernetes.list # 安装kubelet kubeadm kubectl sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl # 启动kubelet sudo systemctl enable --now kubeletCentOS/RHEL/Rocky Linux系统# 添加Kubernetes官方仓库 sudo cat EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] nameKubernetes baseurlhttps://pkgs.k8s.io/core:/stable:/v1.29/rpm/ enabled1 gpgcheck1 gpgkeyhttps://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key EOF # 安装kubelet kubeadm kubectl sudo yum install -y kubelet kubeadm kubectl # 启动kubelet sudo systemctl enable --now kubelet4. Windows平台如何安装kubelet准备工作# 创建Kubernetes目录 mkdir C:\k mkdir C:\etc\kubernetes mkdir C:\var\lib\kubelet mkdir C:\var\log\kubelet下载并安装kubelet# 下载kubelet二进制文件以v1.29.0为例 $version v1.29.0 $kubeletUrl https://dl.k8s.io/release/$version/bin/windows/amd64/kubelet.exe $kubeadmUrl https://dl.k8s.io/release/$version/bin/windows/amd64/kubeadm.exe $kubectlUrl https://dl.k8s.io/release/$version/bin/windows/amd64/kubectl.exe # 下载到C:\k目录 Invoke-WebRequest -Uri $kubeletUrl -OutFile C:\k\kubelet.exe Invoke-WebRequest -Uri $kubeadmUrl -OutFile C:\k\kubeadm.exe Invoke-WebRequest -Uri $kubectlUrl -OutFile C:\k\kubectl.exe # 添加到系统PATH [Environment]::SetEnvironmentVariable(Path, $env:Path ;C:\k, [EnvironmentVariableTarget]::Machine)配置kubelet服务# 下载nssmNon-Sucking Service Manager用于创建Windows服务 $nssmUrl https://nssm.cc/release/nssm-2.24.zip Invoke-WebRequest -Uri $nssmUrl -OutFile C:\k\nssm.zip Expand-Archive C:\k\nssm.zip -DestinationPath C:\k\ # 创建kubelet服务 C:\k\nssm-2.24\win64\nssm.exe install kubelet C:\k\kubelet.exe # 设置服务参数 C:\k\nssm-2.24\win64\nssm.exe set kubelet AppParameters --kubeconfigC:\k\config --pod-infra-container-imagemcr.microsoft.com/oss/kubernetes/pause:3.9 --cgroups-per-qosfalse --enforce-node-allocatable --network-plugincni --cni-bin-dirC:\opt\cni\bin --cni-conf-dirC:\etc\cni\net.d C:\k\nssm-2.24\win64\nssm.exe set kubelet AppDirectory C:\k # 启动服务 Start-Service kubelet5. 如何将新节点加入现有集群Linux节点加入集群# 1. 在Master节点生成join token kubeadm token create --print-join-command # 2. 在Worker节点执行join命令从上面获取 sudo kubeadm join control-plane-endpoint:6443 --token token \ --discovery-token-ca-cert-hash sha256:hash # 3. 配置kubectl复制admin.conf到本地 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/configWindows节点加入集群# 1. 在Master节点生成join token kubeadm token create --print-join-command # 2. 在Windows节点执行join命令 C:\k\kubeadm.exe join control-plane-endpoint:6443 --token token --discovery-token-ca-cert-hash sha256:hash # 3. 配置kubectl # 从Master节点复制admin.conf到Windows节点C:\Users\YourName\.kube\config # 或使用KUBECONFIG环境变量 [Environment]::SetEnvironmentVariable(KUBECONFIG, C:\Users\YourName\.kube\config, [EnvironmentVariableTarget]::User)三、日常运维相关问题6. 如何快速检查集群健康状态执行以下命令获取集群健康快照只读kubectl --context ctx get nodes -o wide kubectl --context ctx get pods -A -o wide kubectl --context ctx get events -A --sort-by.lastTimestamp kubectl --context ctx top nodes 2/dev/null || true kubectl --context ctx top pods -A 2/dev/null || true关注点节点状态MemoryPressure/DiskPressure/PIDPressure/NetworkUnavailable异常PodPending/CrashLoopBackOff/ImagePullBackOff/Evicted近期Warning事件调度失败、探针失败、拉镜像失败、驱逐、卷挂载失败7. 如何查看节点资源可用量方法1使用kubectl top需要metrics-serverkubectl top nodes方法2查看节点容量和可分配资源kubectl get nodes -o custom-columnsNODE:.metadata.name,CPU_CAPACITY:.status.capacity.cpu,CPU_ALLOCATABLE:.status.allocatable.cpu,MEM_CAPACITY:.status.capacity.memory,MEM_ALLOCATABLE:.status.allocatable.memory方法3查看节点资源使用详情含已分配/剩余kubectl describe nodes | grep -E (Name:|Allocated resources:|Capacity:|Allocatable:|cpu|memory)8. 如何筛选可用内存低于2GB的节点# 使用kubectl配合jsonpath和awk筛选 kubectl get nodes -o json | jq -r .items[] | select(.status.allocatable.memory | gsub(Ki; ) | tonumber 2097152) | .metadata.name # 或使用自定义输出配合脚本筛选 kubectl get nodes -o custom-columnsNODE:.metadata.name,MEM_ALLOCATABLE:.status.allocatable.memory | awk $2 ~ /Ki$/ {memsubstr($2,1,length($2)-2); if (mem 2097152) print $1 内存不足: $2}9. 如何查询指定namespace下Running状态的Pod# 单条命令实现 kubectl get pods -n default --field-selectorstatus.phaseRunning -o custom-columnsPOD:.metadata.name,RESTARTS:.status.containerStatuses[0].restartCount,NODE:.spec.nodeName,STATUS:.status.phase # 或更详细版本显示所有容器重启次数 kubectl get pods -n default --field-selectorstatus.phaseRunning -o custom-columnsPOD:.metadata.name,RESTARTS:.status.containerStatuses[*].restartCount,NODE:.spec.nodeName,READY:.status.containerStatuses[*].ready四、故障排除相关问题10. kubelet无法启动如何排查Linux系统# 查看日志 sudo journalctl -u kubelet -f sudo journalctl -u kubelet --since1 hour ago # 检查配置文件 sudo cat /var/lib/kubelet/config.yaml ls -la /etc/kubernetes/Windows系统# 查看事件日志 Get-WinEvent -LogName Application -Source kubelet | Select-Object -First 20 # 查看kubelet日志文件 Get-Content C:\var\log\kubelet\kubelet.log -Tail 5011. 节点显示NotReady状态如何处理# 检查节点状态 kubectl describe node node-name # 检查kubelet配置 kubectl get node node-name -o yaml常见原因CNI插件未安装或配置错误kubelet无法连接到API Server系统资源不足12. 如何查询过去10分钟内包含error的日志# 使用--since参数查询最近10分钟的日志 kubectl logs nginx-xxx -n default --since10m | grep error # 如果Pod有多个容器指定容器名 kubectl logs nginx-xxx -c container-name -n default --since10m | grep -i error # 查看之前容器的日志如果Pod重启过 kubectl logs nginx-xxx -n default --previous --since10m | grep -i error # 多个Pod聚合日志使用label选择器 kubectl logs -l appnginx -n default --since10m --all-containerstrue | grep -i error13. 发布后Pod出现CrashLoopBackOff如何处理发布失败快速诊断步骤kubectl --context ctx -n ns get pods -l applabel -o wide kubectl --context ctx -n ns describe pod pod kubectl --context ctx -n ns logs pod --tail200 kubectl --context ctx -n ns logs pod --previous --tail200 kubectl --context ctx -n ns get events --sort-by.lastTimestamp | tail -n 30常见根因方向镜像拉取失败仓库/权限/Tag/镜像不存在探针失败readiness/liveness/startup配置不合理或依赖外部组件资源不足requests太高调度失败、limits太低OOM配置错误ConfigMap/Secret键缺失、挂载路径冲突、环境变量拼写Service selector不匹配无endpoints导致流量失败五、高级操作相关问题14. 如何安全地回滚Deployment发布# 查看发布历史 kubectl --context ctx -n ns rollout history deploy/name # 回滚到上一版本 kubectl --context ctx -n ns rollout undo deploy/name # 回滚到指定版本 kubectl --context ctx -n ns rollout undo deploy/name --to-revisionrevision # 检查回滚状态 kubectl --context ctx -n ns rollout status deploy/name --timeout5m15. 如何从CronJob立刻触发一次Job执行# 从CronJob立刻触发一次 kubectl --context ctx -n ns create job --fromcronjob/cronjob job-name # 查看Job状态 kubectl --context ctx -n ns get jobs # 查看Job日志 kubectl --context ctx -n ns logs job/job-name --tail200总结以上是PilotGo-plugin-llmops使用过程中的15个高频问题及解决方案。如果您遇到其他问题可以查阅项目中的详细文档或提交issue寻求帮助。在进行任何操作前请确保已经明确目标集群(context)和命名空间(namespace)遵循先读后写证据链的原则确保操作的安全性和可追溯性。需要获取项目代码请使用以下命令克隆仓库git clone https://gitcode.com/openeuler/PilotGo-plugin-llmops【免费下载链接】PilotGo-plugin-llmopsLLM-assisted cluster fault analysis, inspection, and operation and maintenance management.项目地址: https://gitcode.com/openeuler/PilotGo-plugin-llmops创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考