几种强制删除资源对象的方式
仅删除1kubectl delete namespace <ns> 强制删除12# grace-period=0: 设置优雅删除时间为0kubectl delete namespace <ns> --force --grace-period=0 修改.spec.finalizer和metadata.finalizer字段12kubectl edit namespace cattle-system查找finalizers,将后面的值置为[] 通过k8s提供的api接口,修改.spec.finalizers和metadata.finalizer字段,将后面的值置为[],从而k8s会直接将该ns删除1234561. kubectl get namespace <ns> -o json > xx.json2. 编辑该xx.json文件,修改.spec.finalizers字段,将后面的值置为[]3. 另开一个终端,开启k8s apiserver的一个http代理,以免必须带上证书才能访问: kubectl proxy --port=80814. ...
记一次接口慢调用问题排查
现象 系统的商户端出现响应慢,加载慢的问题 关于慢调用问题 可能带来的危害包括: **前端业务维度:**首先慢调用可能会引起前端加载慢的问题,前端加载慢可能会进一步导致应用卸载率高,进而影响品牌的口碑。 **项目交付的维度:**由于接口慢导致达不到 服务质量目标,进而导致项目延期。 **业务架构稳定性:**当接口调用慢时,非常容易引起超时,当其他业务服务都依赖这个接口,那么就会引发大量重试,进而导致资源耗尽,最终导致部分服务或者整个服务不可用的雪崩的现象。 问题排查 先排查下其他端是否也存在慢响应等问题,发现加载正常 检查网关日志(orange),发现有大量status:499。 关于status code 499, client has closed connection 代表客户端主动断开了连接,一般是服务端处理时间太长了,客户端等不了就断开了还有一种情况就是有人攻击,故意消耗服务端资源。 说明网关下游服务响应时间过长,网关路由到app_tenant服务 此时怀疑是不是因为app_tenant服务占用cpu过多,导致将节点cpu打满(目前app...
获取客户端IP之externalTrafficPolicy
externaltrafficpolicy作用阐述把集群外部的服务引入到集群内部来,在集群内部直接使用。没有任何类型代理被创建,这只有 kubernetes 1.7 或更高版本的 kube-dns 才支持【当我们的集群服务需要访问k8s之外的集群时,可以选择这种类型,然后把外部服务的IP及端口写入到k8s服务中来,k8s的代理将会帮助我们访问到外部的集群服务】 什么是external-traffic-policy在k8s的Service对象(申明一条访问通道)中,有一个“externalTrafficPolicy”字段可以设置。有2个值可以设置:Cluster或者Local。 1)Cluster表示:流量可以转发到其他节点上的Pod。 2)Local表示:流量只发给本机的Pod。 这2种模式有什么区别存在这2种模式的原因就是,当前节点的Kube-proxy在转发报文的时候,会不会保留原始访问者的IP。 选择(1)Cluster注:这个是默认模式,Kube-proxy不管容器实例在哪,公平转发。 Kube-proxy转发时会替换掉报文的源IP。即:容器收的报文,源IP地址,已经...
k3s/containerd的一些配置(加速器,私有仓库)
K3s私有镜像仓库配置 Containerd配置镜像仓库 参考 Kubernetes 在 Changelog 中宣布自 Kubernetes 1.20 之后将弃用 Docker 作为容器运行时之后,containerd成为下一个容器运行时的热门选项。虽然 containerd 很早就已经是 Docker 的一部分,但是纯粹使用 containerd 还是给大家带来了诸多困扰,本文将介绍如何使用 containerd 配置镜像仓库和加速器。 本文将以K3s为例对containerd进行配置,如果您的环境未使用 K3s 而是使用的 Kubernetes,你也可以参考本文来配置 containerd 的镜像仓库,因为 containerd 的配置是通用的。 关于 K3s 和 containerd K3s 是一个轻量级 Kubernetes 发行版,二进制大小小于100MB,所需内存不到Kubernetes的一半。K3s 为了降低资源消耗,将默认的 runtime 修改为 containerd,同时也内置了 Kubernetes CLI 工具 crictl和ctr。 K3s 默认的 ...
k3s使用token访问api接口
每次创建了新的namespace下都会生成一个默认的token,名为default-token-xxxx。default就相当于该namespace下的一个用户。也可以考虑新建service count来获取token 查看token secret 123[root@k3s-release-server1 ~]# kubectl get secretsNAME TYPE DATA AGEdefault-token-6f7xb kubernetes.io/service-account-token 3 16m 使用脚本方式访问api 12345678#!/usr/bin/env bashurl=$1token=`kubectl get secrets|awk 'NR>1'|awk '{print $1}'|xargs -i kubectl describe secret {...
k3s和k8s中leader选举方案的区别
https://www.reddit.com/r/kubernetes/comments/kqx5ql/difference_between_master_and_worker_concepts_in/ leader选举方案的不同在于用于备份主服务器的数据库 领导者选举是针对分布式数据库 etcd 的。由于 etcd 往往存在于 K8S 中的主节点上, 所以会和k3s混淆 K3S 默认使用 SQLite,因此不需要leader选举
关于k3s的证书轮换策略
前言官方文档 K3s 启动时会自动生成 CA 证书,CA 证书的有效期为 10 年。其他证书有效期为 1 年,如果证书已经过期或剩余的时间不足 90 天,则在 K3s 重启时轮换证书。K3s 服务只是一个进程,K3s 服务重启不会影响正在运行的 pod,也不会影响你的业务。 证书轮换方式(3种任选其一)使用crontab + shell脚本方式实现证书轮换编写脚本 - upgradeCert.sh,并放在主节点服务器上 查看主节点位置:kubectl get nodes -l 'node-role.kubernetes.io/control-plane'|awk '{if (NR>1){print $1}}' server node脚本 1234567891011121314151617181920#!/bin/bash# 目标目录DIR="/var/lib/rancher/k3s/server/tls"now=$(date +%s)# 递归查找.crt文件for FIL...
K8S容器退出状态码Exit-Code分析
转自: https://blog.csdn.net/hakula007/article/details/125786395 Pod status 状态解释 [1] CrashLoopBackOff:容器退出,kubelet正在将它重启 InvalidImageName:无法解析镜像名称 ImageInspectError:无法校验镜像 ErrImageNeverPull:策略禁止拉取镜像 ImagePullBackOff:镜像正在重试拉取 RegistryUnavailable:连接不到镜像中心 ErrImagePull:通用的拉取镜像出错 CreateContainerConfigError:不能创建kubelet使用的容器配置 CreateContainerError:创建容器失败 m.internalLifecycle.PreStartContainer:执行hook报错 RunContainerError:启动容器失败 PostStartHookError:执行hook报错 ContainersNotInitialized:容器没有初始化完毕 ContainersNotR...
daemonset的使用以及测试部署filebeat
filebeat_daemonset.yaml123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194...
etcdctl的安装和使用
使用 etcdctletcdctl 为 etcd 提供了一个 CLI。 如果您想在安装带有嵌入式 etcd 的 K3s 后使用 etcdctl,请使用官方文档安装 etcdctl。 123VERSION="v3.5.0"curl -L https://github.com/etcd-io/etcd/releases/download/${VERSION}/etcd-${VERSION}-linux-amd64.tar.gz --output etcdctl-linux-amd64.tar.gztar -zxvf etcdctl-linux-amd64.tar.gz --strip-components=1 -C /usr/local/bin etcd-${VERSION}-linux-amd64/etcdctl 然后开始使用带有适当 K3s 标志的 etcdctl 命令: 1234etcdctl --endpoints="https://127.0.0.1:2379" --cac...
