k8s
文章平均质量分 76
k8s
帅大大的架构之路
坚持!努力!奋斗!
展开
-
helm 部署rabbitmq集群
在配置values.yaml,有一个managementUsername和rabbitmqUsername,默认managementUsername无法新增用户和virtual host,需要使用rabbitmqUsername登录才可以。版本下载地址:https://github.com/helm/helm/releases。官方文档:https://helm.sh/docs/intro/install/5:访问集群 http://$NODE_IP:30672/3:运行rabbitmq集群。转载 2024-07-29 13:59:22 · 214 阅读 · 0 评论 -
CKA证书模拟考试25道题
原文vim设置题库1题解接下来创建第一个命令第二个第二个命令也可以改进为题库2题解手动执行必要的更改。使用 Kubernetes 文档并搜索例如容忍和 nodeSelector 来查找示例:这里重要的是添加在控制平面节点上运行的容差,以及 nodeSelector,以确保它只在控制平面节点上运行。如果我们只指定容忍度,则可以 在控制平面或工作节点上调度 Pod。现在我们创建它:让我们检查一下 Pod 是否已调度:题库3题解题库4题解然后创建 Pod我们还转载 2024-02-23 18:06:12 · 741 阅读 · 0 评论 -
使用Helm3.6 安装 Ingress-nginx
NGINX Ingress Controller 是使用 Kubernetes Ingress 资源对象构建的,用 ConfigMap 来存储 Nginx 配置的一种 Ingress Controller 实现。安装 ingress-nginx 有多种方式,本文使用 helm3.6 方式进行安装。其他安装方式可以参考文档:https://kubernetes.github.io/ingress-nginx/deploy/Helm 是一个用于对需要在 k8s 上部署的复杂应用进行定义、安装和更新。转载 2024-02-04 17:42:37 · 1431 阅读 · 1 评论 -
《文章分享》
KubeSphere 和 Kubernetes 目前在部门是以单机版形式安装的,故对于不同环境的区分主要是通过分配不同端口来实现,具体实现时需要能在 Jenkins 和 Kubernetes 的 yaml 文件中都能动态的获取对应的。在 Java 开发部分,约 80% 的都是 Java EE 开发,由于公司的业务主要是给外部客户提供软硬件产品和咨询服务,在早期公司和部门更关注的是如何将产品销售给更多的客户、获得更多的订单和尽快回款,对。经过一番摸索后,实现了结合。转载 2023-11-21 15:07:13 · 188 阅读 · 0 评论 -
使用Go开发Kubernetes Operator
Kubernetes就是一个“数据库”(数据实际持久存储在etcd中);其API就是“sql语句”;API设计采用基于resource的Restful风格, resource type是API的端点(endpoint);每一类resource(即Resource Type)是一张“表”,Resource Type的spec对应“表结构”信息(schema);每张“表”里的一行记录就是一个resource,即该表对应的Resource Type的一个实例(instance);转载 2023-11-04 16:29:04 · 402 阅读 · 0 评论 -
kubernetes-operator开发教程(基于kubebuilder脚手架)
Operator是什么?Kubernetes Operator是一个自定义控制器,用于通过自动化操作来管理复杂应用或服务。实现原理是什么?Kubernetes Operator的实现原理基于自定义控制器(Controller)和自定义资源定义(CRD)。转载 2023-11-03 16:04:26 · 1182 阅读 · 1 评论 -
聊一聊K8s Operator在日志采集器中的应用
在Kubernetes中,资源是Kubernetes API中的一个端点,用于存储一堆特定类型的API对象。它允许我们通过CRD向集群添加更多种类的对象来扩展Kubernetes。添加新种类的对象之后,我们可以像其他任何内置对象一样,使用kubectl 来访问我们自定义的API对象。Kubernetes的所有控制器,都有一个控制循环,负责监控集群中特定资源的更改,并确保特定资源在集群里的当前状态与控制器自身定义的期望状态保持一致。这种让关联资源的当前状态向期望状态迈进的过程叫reconcile。转载 2023-09-22 14:13:40 · 578 阅读 · 0 评论 -
k8s查看pod所对应的网卡
登录k8s-node02节点,执行route -n|grep “172.27.14.193”网络原理这里不详细描述,这里主要进行calico查看veth pair。这里以nginx-test-795d659f45-k7gn5为例。查看到pod ip为172.27.14.193,在。登录pod所在节点,找到网卡序号为7的网卡。在执行 ip 查看网卡及状态。-node02节点上。方法二,进入容器查看。转载 2023-08-17 17:14:07 · 1590 阅读 · 0 评论 -
基于真实场景解读 K8s Pod 的各种异常
在 K8s 中,Pod 作为工作负载的运行载体,是最为核心的一个资源对象。Pod 具有复杂的生命周期,在其生命周期的每一个阶段,可能发生多种不同的异常情况。K8s 作为一个复杂系统,异常诊断往往要求强大的知识和经验储备。结合实战经历以及 EDAS 用户真实场景的归纳,我们总结了 K8s Pod 的 13 种常见异常场景,给出各个场景的常见错误状态,分析其原因和排查思路。转载 2023-06-26 11:47:23 · 298 阅读 · 0 评论 -
too many pod 节点pod总数超出限制
在/etc/kubernetes/kubelet.env中增加fail-swap-on=false --max-pods=20。可以判断也是pod数量过多导致的。describe pod xxxx查看,只有下面的信息,并没有。pod调度失败,显示某个节点 too many pod。集群中存在大量的pod处于Pending状态,查看。重启kubelet服务,再次查看节点可容纳数量。转载 2023-06-25 12:00:17 · 504 阅读 · 0 评论 -
8.深入k8s:资源控制Qos和eviction及其源码分析
这一篇讲解了其中资源控制是怎么做的,理解了通过limit和request的设置会影响到pod被删除的优先级,所以我们在设置pod的时候尽量设置合理的limit和request可以不那么容易被kill掉;然后通过分析了源码知道了limit和request会影响到QOS的评分,从而影响到pod被kill掉的优先级。接下来通过源码分析了k8s中对阈值的设定是怎样的,当资源不够的时候pod是根据什么条件被kill掉的,这一部分花了很大的篇幅来介绍。转载 2023-06-19 09:50:06 · 422 阅读 · 0 评论 -
k8s通过deployment创建pod失败排查
deployment创建pod失败,通过describe deployment ${DEPLOY_NAME} 没能看到具体原因。最终在“edit deployment ${DEPLOY_NAME}”中看到错误原因。转载 2023-05-23 13:57:33 · 2238 阅读 · 0 评论 -
k8s部署kong(第三版)
kong新版采用无db模式,将所有的配置,通过k8s资源的形式,存储到etcd里面。原创 2023-05-23 10:58:48 · 1714 阅读 · 0 评论 -
Kompose使用
参考网址:https://kubernetes.io/docs/tools/kompose/user-guide/Kompose是一个转换工具,可以将-compose编排docker-compose.yaml文件转换为kubernetes或者OpenShift编排文件。转载 2023-05-22 09:34:11 · 213 阅读 · 0 评论 -
k8s常见异常事件及解决方案
当容器集群中的节点(宿主机)磁盘使用率达到85%之后,会触发自动的容器镜像回收策略,以便于释放足够的宿主机磁盘。比如容器的内存限制值配置了1Gi,而容器的内存随着容器内进程内存使用量的增加超过了1Gi,就会导致容器被操作系统Cgroup Kill。集群中的容器实例,DNS解析均依赖集群内的DNS组件,应用中业务请求的地址都需要经过集群DNS组件。重启集群中的coredns组件发生重启(重新创建),一般是由于coredns组件压力较大导致oom,请检查业务是否异常,是否存在应用容器无法解析域名的异常。转载 2023-05-18 16:37:55 · 2863 阅读 · 0 评论 -
docker-compose编排参数详解
Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用单个命令,您可以从配置中创建并启动所有服务。Compose可以.yml 或 .yaml 作为文件扩展名。Compose适用于所有环境:生产,登台,开发,测试以及CI工作流程。关于 docker compose 技术可以查看官方文档以下的内容是确立在已经下载好 Docker 以及 Docker Compose,可参看 Docker Compose 的官方安装教程。转载 2023-04-26 11:52:42 · 3973 阅读 · 0 评论 -
kubectl拷贝已完成的容器中的文件到宿主机
【代码】kubectl拷贝已完成的容器中的文件到宿主机。原创 2023-03-15 09:37:37 · 1203 阅读 · 0 评论 -
k8s部署kafka-ui
这里将存活性探针和就绪性探针都注释了,加了刚开始怎么都起不来,原因是kafka-ui启动的时间比较长,然后我这边设置的时间比较短,每次它启动到一半,就绪性探针没探测到8080端口,就会重启该pod,然后就会陷入一个死循环,解决办法有两种,第一种是调大探测时间,第二种就是直接注释掉两个探针,我偷懒就直接注释了,pod是可以正常启动到,因为是不太重要的服务,所以无所谓,如果是业务pod,最好还是慢慢调试。原创 2023-03-10 09:41:16 · 706 阅读 · 0 评论 -
k8s 理解Service工作原理
以上我们先认识了Service这个API对象,接着讲到了service与endpoints和pod的关联,然后是service与kube-proxy的关系,以及kube-proxy的两种模式如何通过service的IP创建iptables、IPVS规则将流量转发到Pod。kube-proxy 通过 Informer知道了Service、endpoints对象的创建,然后把service身上的CLUSTER-IP 和端口已经端点信息拿出来,创建iptable NAT规则做转发或通过ipvs模块创建VS。转载 2023-03-04 17:52:02 · 216 阅读 · 0 评论 -
Pod 网络无法访问排查处理
如果您无法在相关配置上定位到问题点,则需要确认数据包最终是否被路由到容器里,或者报文到达容器的内容和出容器的内容是否符合预期,并通过分析报文进一步缩小问题范围。若使用 BGP 协议,则会自动同步,通常不需要任何配置。检查 Pod 所在节点的安全组是否正确放通对端 VPC 网段(或者节点所在的 VPC 子网网段)和容器网段。检查 Pod 所在节点的安全组是否正确放通对端节点所在的 VPC 网段或 VPC 子网网段。检查节点安全组是否正确放通容器网段和对端节点所在的 VPC 网段或 VPC 子网网段。转载 2023-03-04 16:55:13 · 2363 阅读 · 0 评论 -
Kong API网关使用笔记
kong配置了很多东西后一定要记得备份,备份可使用konga界面里面的Snapshot功能,创建快照,然后导出快照。转载 2023-03-04 11:49:54 · 882 阅读 · 0 评论 -
k8s部署kong(第二版)
我的是基于腾讯云的storageclass存储来做的,当然你也可以直接创建hostpath类型的pv和pvc。转载 2023-03-03 15:00:42 · 643 阅读 · 0 评论 -
k8s部署单节点redis
如果redis数据需要持久化 可以用存储。转载 2023-02-28 13:31:56 · 889 阅读 · 1 评论 -
k8s常用资源模板
仅自己备用。原创 2023-02-23 14:00:55 · 185 阅读 · 0 评论 -
hume项目k8s的改造
首先,点击jenkins构建,会选择对应的分支(如果是自动触发会获取到提交的分支,具体看jenkinsfile流程),然后jenkins会通过k8s插件调用k8s,根据jenkinsfile中定义的模板启动一个任务pod,pod中会先拉取代码,然后执行一系列的初始化操作(init.sh、拉取依赖包、并拷贝所有文件到build-work/hume,以便于后面构建镜像),再然后会build镜像,推送到镜像仓库,最后就是使用kubectl命令执行更新服务器pod的镜像版本发布。下面需要文件可在如下连接查找。原创 2023-02-15 10:21:31 · 583 阅读 · 0 评论 -
K8S部署rook+ceph云原生存储
Rook是一个自我管理的分布式存储编排系统,它本身并不是存储系统,在存储和k8s之间搭建了一个桥梁,使存储系统的搭建或者维护变得特别简单,Rook将分布式存储系统转变为自我管理、自我扩展、自我修复的存储服务。它让一些存储的操作,比如部署、配置、扩容、升级、迁移、灾难恢复、监视和资源管理变得自动化,无需人工处理。 Ceph是一个开源的分布式存储系统,具有高扩展性、高性能、高可靠性等特点,提供良好的性能、可靠性和可扩展性。支持对象存储、快存储和文件系统,是目前为云平台提供存储的理想方案。转载 2023-02-10 09:36:44 · 2069 阅读 · 0 评论 -
Kubernetes(k8s)权限管理RBAC详解
kubernetes 集群相关所有的交互都通过apiserver来完成,对于这样集中式管理的系统来说,权限管理尤其重要,在1.5版的时候引入了RBAC(Role Base Access Control)的权限控制机制。启用RBAC,需要在 apiserver 中添加参数–authorization-mode=RBAC,如果使用的kubeadm安装的集群,1.6+版本都默认开启了RBAC。AlwaysDeny:表示拒绝所有请求,一般用于测试。:允许接收所有请求。转载 2023-02-09 11:48:04 · 1536 阅读 · 1 评论 -
你真的理解 Kubernetes 中的 requests 和 limits 吗?
为了实现 Kubernetes 集群中资源的有效调度和充分利用, Kubernetes 采用requests和limits两种限制类型来对资源进行容器粒度的分配。每一个容器都可以独立地设定相应的requests和limits。这 2 个参数是通过每个容器 containerSpec 的 resources 字段进行设置的。一般来说,在调度的时候requests比较重要,在运行时limits比较重要。复制代码requests定义了对应容器需要的最小资源量。转载 2023-02-08 13:52:38 · 725 阅读 · 0 评论 -
深入浅出 Kubernetes 理论篇 (六):镜像自动拉取
理解私有镜像自动拉取的实现,有一个难点和一个重点。难点是 OAuth 2.0 安全协议的原理,上文主要分析了为什么 OAuth 会这么设计;重点是集群控制器原理,因为整个自动化的过程,实际上是包括 Admission control 和 Acr credential helper 在内的多个控制器协作的结果。作者简介罗建龙(花名声东),阿里云技术专家。多年操作系统和图形显卡驱动调试和开发经验。目前专注云原生领域,容器集群和服务网格。转载 2023-02-04 11:39:42 · 403 阅读 · 0 评论 -
Ingress的概念和原理
ingress controller是一个pod服务,封装了一个web前端负载均衡器,同时在其基础上实现了动态感知ingress并根据ingress的定义生成前端web负载均衡器的配置文件,ingress-nginx-controller本质上就是一个nginx,只不过它能根据ingress资源定义的动态生成nginx的配置文件,然后动态reload。转载 2023-02-03 15:57:06 · 1291 阅读 · 0 评论 -
Pod探针
但是,后续发生故障的时间检测的时间也会拉长到大于一分钟!如果对于时间要求过高的业务而言是不可接收的。也会一直检测pod内部容器的程序是否正常,如果返回状态为sucess就不做操作,如果检测到异常,对应的service就会终止前端分发到该pod的流量,该探针主要针对的是程序启动了,但是否做好接收流量的准备。举例场景:访问的一个界面因为流量过大或者后端请求时间过长导致没有成功返回界面,这时候又没必要重启pod,那么部署该探针后,检测到异常后,对应service就会先终止前台到该pod的流量,直到检测成功。转载 2023-02-01 14:57:57 · 273 阅读 · 0 评论 -
containerd添加腾讯云镜像仓库认证
【代码】containerd添加腾讯云镜像仓库认证。原创 2023-01-17 16:30:08 · 487 阅读 · 0 评论 -
k8s部署kong
我们使用helm部署kong,当然首先要安装helmhelmkong验证一下可以看到kong是正常的,只是还没有配置具体的service和route,所以无法访问到什么。原创 2023-01-17 13:40:15 · 1511 阅读 · 0 评论 -
calico排错相关
我这边的原因大概是在k8s节点使用docker安装了其他容器,而且还创建了一个网桥,我的k8s节点是采用containerd作为运行时。猜想应该是创建了其他网桥,导致calico那边匹配网卡报错,然后这个节点的pod网络一直不同(其他节点都是好的)1.具体报错(使用kubectl describe查看pod,pod状态为0/1)后面将新建的容器和网桥都删除了,然后就好了,通信正常。原创 2023-01-16 13:47:52 · 248 阅读 · 0 评论 -
containerd的CLI工具ctr和crictl
ctr,不过 ctr 的功能没有 docker 完善,。接下来我们就先简单介绍下ctr的使用。直接输入ctr注意:如何查看command的命令选项呢?(直接回车或者加上-h都行)转载 2023-01-11 10:09:27 · 7397 阅读 · 3 评论 -
Docker 容器网络及其配置详解
自定义 docker0 桥的网络属性信息需要修改/etc/docker/daemon.json 配置文件在客户端上向 dockerd 直接传递“-H|–host”选项指定要控制哪台主机上的 docker 容器。转载 2022-12-15 10:26:51 · 878 阅读 · 0 评论 -
docker常用操作(持续更新)
然后再用如下命令,即可看到bridge模式中是否有相应的容器,太多的话可以过滤。使用如下方式也可以看到,如果是default,那也就是bridge。1.查看某个容器工作在哪种网络模式。如下命令,通常可以看到四种网络模式。原创 2022-12-15 09:44:18 · 101 阅读 · 0 评论 -
kubeadm从1.15.0升级k8s到1.20.0
7、如果kubectl get nodes 报错“The connection to the server localhost:8080 was refused - did you specify the right host or port?6、加入集群后,node的状态不正常是网络原因,需要执行下原来的flannel的安装yaml即可。#这个是阿里云的镜像仓库,下载速度还可以。剩下的就是把node加入到集群即可。复制到其他机器上,去下载镜像。我们可以加一个环境变量即可。看到如下输出说明成功了。转载 2022-11-19 15:26:16 · 422 阅读 · 0 评论 -
k8s删除node节点
具体报错信息为:networkPlugin cni failed to set up pod “alertmanager-main-1_monitoring” network: failed to set bridge ad has an IP address different from 10.244.5.1/24 ,意思是已经集群网络cni已经有一个不同于10.244.51.1/24 的网络地址,所以需要执行上述命令重置节点网络。再次在master节点查看node发现已经加入到集群了。转载 2022-10-18 10:26:22 · 1180 阅读 · 0 评论 -
理解 Docker 网络(一) -- Docker 对 宿主机网络环境的影响
通过Docker容器可以实现文件系统, 网络和内核的隔离。Docker 网络是使用 Docker 的一个很重要的知识点。在不了解 Docker 网络的情况下使用 Docker 部署应用可能会出现 Docker 容器跨过宿主机防火墙(iptables)的限制直接与取得外网访问权的情况。在这篇文章中将会分析安装 Docker 对宿主机网络设备和 iptables 两个重要的网络环境的影响。转载 2022-10-17 16:12:14 · 1457 阅读 · 0 评论