k8s
文章平均质量分 82
正在输入中…………
知识本身是在不断贬值的,组织知识的能力是在不断升值的!
从事IT行业10年,目前主要负责公司信息化建设和运维管理工作,工作精力分为两部分:第一部分是互联网行业高级运维;第二部分为基因行业IT建设,做过生物信息分析、公司信息化系统建设、IT整体规划、基础设施建设维护等。从底层小兵做起,逐步成长为公司IT负责人。
展开
-
Rancher中使用promtail+loki+grafna收集k8s日志并展示
根据应用需求和日志数量级别选择对应的日志收集、过滤和展示方式,当日志量不太大,又想简单集中管理查看日志时,可使用promtail+loki+grafna的方式。本文找那个loki和grafana外置在了k8s集群之外。原创 2023-12-14 14:56:21 · 1021 阅读 · 0 评论 -
RKE2部署Kubernetes(四)rancher2.7.9日志管理Logging Operator
Logging Operator 是 BanzaiCloud 基于云原生场景的开源日志采集方案,SUSE Rancher 2.6 版本在整合了该产品之后,将会在用户的操作下自动部署 Logging Operator 并自动配置 kuberletes logging pipeline。原创 2023-12-06 17:18:20 · 1045 阅读 · 0 评论 -
RKE2部署kubernetes(三)工作agent节点配置本地harbor私有镜像仓库
RKE2部署kubernetes中在agent节点配置本地Harbor镜像仓库原创 2023-11-30 13:18:51 · 640 阅读 · 0 评论 -
RKE2部署Kubernetes(二) 使用helm部署rancher(适用于生产环境)
RKE2部署kubernetes集群后,使用helm部署rancher,方便管理集群原创 2023-11-28 17:29:22 · 752 阅读 · 0 评论 -
高可用RKE2部署kubernetes(适用于生产环境)
高可用RKE2集群部署kubernetes原创 2023-11-28 17:24:38 · 1500 阅读 · 0 评论 -
基于Kubernetes Jenkins CICD(项目实战)
基于Kubernetes Jenkins CICD一、在Kubernetes 安装 Jenkins优点目前很多公司采用Jenkins集群搭建复合需求的CI/CD流程,但是会存在一些问题主Master发生单点故障时,整个流程都不可用每个Slave的环境配置不一样,来完成不同语言的编译打包,但是这些差异化的配置导致管理起来不方便,维护麻烦资源分配不均衡,有的slave要运行的job出现排队等待,而有的salve处于空闲状态资源有浪费,每台slave可能是物理机或者虚拟机,当slave处于空闲状态时原创 2020-12-02 15:58:04 · 1246 阅读 · 1 评论 -
k8s(18)之污点与容忍
Kubernetes 污点与容忍首先说一下污点(Taint),当我们需要将master节点保留给Kubernetes系统组件调用时,或者需要保留master节点的资源时,我们可以标记一个Taint,当节点标记Taint时,除非Pod也被识别为可以容忍(Toleration)污点的节点,否则默认情况下Kubernetes scheduler不会将Pod调度到有污点的节点上Kubernetes 亲和性调度一般情况下我们部署的 Pod 是通过集群的自动调度策略来选择节点的,默认情况下调度器考虑的是资源足够原创 2020-12-10 16:37:58 · 1520 阅读 · 0 评论 -
k8s(17)之亲和性调度
k8s之亲和性调度一般情况下我们部署的 Pod 是通过集群的自动调度策略来选择节点的,默认情况下调度器考虑的是资源足够,并且负载尽量平均,但是有的时候我们需要能够更加细粒度的去控制 Pod 的调度,比如我们内部的一些服务 gitlab 之类的也是跑在Kubernetes集群上的,我们就不希望对外的一些服务和内部的服务跑在同一个节点上了,担心内部服务对外部的服务产生影响;但是有的时候我们的服务之间交流比较频繁,又希望能够将这两个服务的 Pod 调度到同一个的节点上。这就需要用到 Kubernetes 里面的原创 2020-12-10 16:37:42 · 835 阅读 · 0 评论 -
k8s(16)之持久化存储StorageClass
k8s之持久化存储StorageClass持久化存储 StorageClass上面文章我们创建的pv和pvc都是静态的,简单的来说静态的pv和pvc需要我们手动的创建,这种情况很大程度上并不能满足我们的需求,比如我们有一个应用需要对存储的并发度要求比较高,而另外一个应用对读写速度又要求比较高,特别是对于StatefulSet类型的应用。使用静态PV就很不合时了,这里就需要使用StorageClassKubernetes从v1.4版本开始引入了一个新的资源对象StorageClass,用于标记存储资源原创 2020-12-10 16:37:21 · 872 阅读 · 0 评论 -
k8s(15)之服务发现
k8s之服务发现服务发现在微服务架构里,服务之间经常进行通信,服务发现就是解决不同服务之间通信的问题。比如一个nginx的pod,要访问一个mysql服务,就需要知道mysql服务的ip和port,获取ip和port的过程就是服务发现。服务发现方式1.环境变量Pod创建的时候,服务的ip和port会以环境变量的形式注入到pod里,比如pod创建时有一个redis-master服务,服务ip地址是10.4.82.11,port是6379,则会把下面一系列环境变量注入到pod里,通过这些环境变量访问re原创 2020-12-10 16:36:55 · 335 阅读 · 0 评论 -
k8s基础(14)之RBAC角色权限控制
k8s基础()之RBAC角色权限控制RBAC是基于角色的访问控制 (Role-Based Access Control) 在RBAC中,权限与角色相关联。Kubernetes 基于角色的访问控制使用rbac.authorization.k8s.io API组来实现权限控制,RBAC允许管理员通过Kubernetes API动态的配置权限策略。如果需要开启RBAC授权需要在apiserver组件中指定--authorization-mode=Node,RBAC在Kubernetes中所有的API对象都保存原创 2020-09-21 17:18:30 · 1106 阅读 · 0 评论 -
k8s基础(13)之scheduler调度器
k8s基础(13)之scheduler调度器kube-scheduler是kubernetes系统的核心组件质疑,主要负责整个集群资源的调度功能,根据特定的调度算法和策略,将Pod调度到最优的一个工作节点上面去,从而更加的合理、更加充分的利用集群的资源。调度器流程scheduler 是Kubernetes的调度器,它的主要作用就是根据特定的调度算法和调度策略将Pod调度到合适的Node节点上去,是一个独立的二进制程序,当我们通过API 或者kubectl工具发送创建Pod的指令后,apiserver会原创 2020-09-21 17:18:18 · 778 阅读 · 0 评论 -
k8s基础(12)之PV与PVC
k8s基础()之PV与PVC在Kubernetes中,因为deployment默认使用的是hostpath,当我们pod重启或删除pod后数据会丢失。这时候我们就需要一个持久化存储来解决这个问题。 本次介绍的是kubernetes pv与pvc,同时使用nfs作为后端存储进行演示。 当然kubernetes pv 支持不同的volume,为了环境快速构建学习本次以NFS为主首先我们来了解一下什么是PV和PVCPV的全称是: PersistentVolume (持久化卷),是对底层的共享存储的一种抽象原创 2020-09-21 17:18:10 · 1254 阅读 · 0 评论 -
k8s基础(11)之网络原理
k8s基础(11)之网络原理关于Kubernetes网络,有如下常见问题1.Kubernetes的网络模型是什么? 2.Docker背后的网络基础是什么? 3.Docker自身的网络模型和局限 4.Kubernetes的网络组建之间如何通讯 5.外部如何访问Kubernetes集群 6.有哪些开源的组建支持Kubernetes的网络模型Kubernetes 网络模型Kubernetes在网络模型设计的一个基础原则是:每个Pod都拥有一个独立的IP地址,而且假定所有Pod都在一个可以直接连通的、扁原创 2020-09-21 17:17:53 · 237 阅读 · 0 评论 -
k8s基础(10)之ConfigMap
k8s基础()之ConfigMapConfigMap 介绍在Kubernetes 1.2中新添加了功能ConfigMap,主要功能是为了解决应用程序会从配置文件、环境变量中获取配置信息。但是默认情况下配置信息需要与docker images解耦,ConfigMap API为我们提供了向容器中注入配置信息的机制,ConfigMap可以被用来保存单个属性,也可以用来保存整个配置文件或者JSON二进制对象ConfigMap API资源用来保存key-vlaue pair配置数据,这个数据可以在pods里使用原创 2020-09-21 17:17:44 · 397 阅读 · 0 评论 -
k8s基础(9)之Job和CronJob
k8s基础()之Job和CronJob首先介绍一下job和cronjob在Kubernetes集群提供了Job和CronJob两种资源对象Job负责处理任务,即仅执行一次的任务,它保障批处理任务的一个或多个Pod成功结束CronJob则就是在Job上加上了时间调度Job 演示这里使用job资源对象创建一个任务,用于倒计时cat >>Job.yaml<<EOF---apiVersion: batch/v1kind: Jobmetadata: name: j原创 2020-09-21 17:17:28 · 513 阅读 · 0 评论 -
k8s基础(8)之Namespace
k8s基础()之NamespaceNamespace(命名空间)是Kubernetes系统中另一个非常重要的概念,Namespace在很多情况下用于实现多租户的资源隔离。Namespace通过将集群内部的资源对象"分配"到不同的Namespace中,形成逻辑上分组的不同项目、小组或者用户组,便于不同的分组在共享整个集群的资源的同时还能被分别管理Kubernetes集群启动后,会创建一个名为"default"的Namespace[root@master ~]# kubectl get namespace原创 2020-09-21 17:17:20 · 328 阅读 · 0 评论 -
k8s基础(7)之Label
k8s基础(7)之LabelLabellabel介绍Label (标签) Label是Kubernetes系统中另外一个核心概念。一个Label是一个key=value的键值对,其中key与value由用户自己指定。Label可以附加到各种资源上,例如Node Pod Service RC等。 一个资源对象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上去,Label通常在资源对象定义时确认,也可以在对象创建后动态添加或者删除我们可以通过给指定的资源对象捆绑一个或多个原创 2020-09-21 17:17:11 · 512 阅读 · 0 评论 -
k8s基础(6)之DaemonSet与StatefulSet
k8s基础()之DaemonSet与StatefulSetDaemonSetDaemonSet用于在每个Kubernetes节点中将守护进程的副本作为后台运行,当节点从集群中被移除后,该节点上的Pod也会被移除,当然,如果我们删除DaemonSet,所有和这个对象相关的Pods都会被删除。适用场景集群存储守护程序,如glusterd、ceph要部署在每个节点上提供持久性存储节点监视守护进程,如prometheus监控集群,可以在每个节点上运行一个node-exporter进程来收集监控节点的信息原创 2020-09-21 17:16:57 · 659 阅读 · 0 评论 -
k8s基础(5)之HPA
k8s基础(5)之HPA什么是Horizontal Pod AutoscalerHPA简介 HPA全称Horizontal Pod Autoscaling(Pod横向自动扩容,简称HPA)在kubernetes 1.1版本首次发布这一重量级新特性通过手工执行kubectl scale命令,我们可以实现Pod扩容或缩容。如果仅仅到此显然不符合Kubernetes的定位目标–自动化、智能化,HPA会从Heapster或者用户自定义的RESTclient端获取每个Pod利用率或原始值的平均值,然后和HPA中原创 2020-09-21 17:16:48 · 634 阅读 · 0 评论 -
k8s基础(4)之Deployment
k8s基础(4)之DeploymentDeployment 相对于RC的一个最大升级是我们可以随时知道当前Pod"部署"的进度,实际上由于一个Pod的创建、调度、绑定节点及在Node上启动对应的容器这一完整过程需要一定的时间,所以我们期待系统启动N个Pod副本的目标状态,实际上是一个连续变化的"部署过程"导致的最终状态。Deployment经典常用场景1.创建一个Deployment对象来生成对应的Replica Set并完成Pod副本的创建过程2.检查Deployment的状态来看部署动作是否完原创 2020-09-21 17:16:37 · 2993 阅读 · 0 评论 -
k8s基础(3)之RC
k8s基础(3)之RC、Replica SetRC介绍Replication Controller (简称RC),RC是Kubernetes系统中的核心概念之一,简单来说,它定义了一个期望的场景,即声明某种Pod的副本数量在任意时刻都符合某个预期值RC定义了如下1.Pod期待的副本数(replicas)2.用于筛选目标Pod的Label Seletcor(标签选择器)3.当Pod的副本小于预期(replicas)时,用于创建新Pod的Pod模板(template)RC主要功能确保Pod原创 2020-09-21 17:16:26 · 1298 阅读 · 0 评论 -
k8s基础(2)之Service
k8s基础()之Service什么是Service (服务) RC与Service的关系.pngService是Kubernetes里最核心的资源对象之一,Service定义了一个服务的访问入口地址,前端的应用(Pod)通过这个入口地址访问其背后的一组由Pod副本组成的集群实例。 Service与其后端Pod副本集群之间则是通过Label Selector来实现"无缝对接"。而RC的作用实际上是保证Service 的服务能力和服务质量处于预期的标准。通过分析、识别并建模系统中所有服务为微服务—Ku原创 2020-09-21 17:16:17 · 209 阅读 · 1 评论 -
Docker不适合部署数据库的原因
Docker不适合部署数据库的原因1、数据安全问题不要将数据储存在容器中,这也是 Docker 官方容器使用技巧中的一条。容器随时可以停止、或者删除。当容器被rm掉,容器里的数据将会丢失。为了避免数据丢失,用户可以使用数据卷挂载来存储数据。但是容器的 Volumes 设计是围绕 Union FS 镜像层提供持久存储,数据安全缺乏保证。如果容器突然崩溃,数据库未正常关闭,可能会损坏数据。另外,容器里共享数据卷组,对物理机硬件损伤也比较大。即使你要把 Docker 数据放在主机来存储 ,它依然不能保证不丢数原创 2020-08-12 13:44:23 · 647 阅读 · 0 评论 -
调试Kubernetes集群中的网络停顿问题
调试Kubernetes集群中的网络停顿问题在过去几年,Kubernetes在GitHub已经成为标准的部署模式。目前在GitHub,我们在Kubernetes上运行着海量的面向内部团队以及面向C端的服务。随着Kubernetes集群规模不断增长,我们对于服务延迟的要求越来越严苛。我们开始观察到一些运行在我们Kubernetes平台上的服务正在面临偶发的延迟问题,这些断断续续的问题并不是由于应用本身的性能问题导致的。我们发现,Kubernetes集群上的应用产生的延迟问题看上去似乎是随机的,对于某些网转载 2020-07-02 14:15:38 · 285 阅读 · 0 评论 -
Prometheus 踩坑集锦
Prometheus 踩坑集锦1 几点原则2 Prometheus 的局限3 K8S 集群中常用的 exporter4 K8S 核心组件监控与 Grafana 面板5 采集组件 All IN One6 合理选择黄金指标7 K8S 1.16中 Cadvisor 的指标兼容问题8 Prometheus 采集外部 K8S 集群、多集群9 GPU 指标的获取10 更改 Prometheus 的显示时区11 如何采集 LB 后面的 RS 的 Metric12 版本的选择13 Prometh转载 2020-06-23 17:32:35 · 1597 阅读 · 1 评论 -
kubernetes-网络组件-Flannel
kubernetes-网络组件-Flannel前言今天来聊聊 Flannel,Flannel 是 Kubernetes 默认网络组件,再聊 Flannel 时,我们得先明白一个叫 CNI 东东,CNI 是什么?能有什么用?下文会做出解释。CNI 简单介绍CNI(Container Network Interface)是 CNCF 旗下的一个项目,由一组用于配置Linux容器网络接口的规范和库组成,同时还包含了一些插件。CNI 仅关心容器创建时的网络分配和当容器被删除时释放网络资源。Kubernete原创 2020-06-10 18:50:53 · 427 阅读 · 0 评论 -
修改NodePort的范围
修改NodePort的范围在 Kubernetes 集群中,NodePort默认范围是 30000-32767,某些情况下,因为您所在公司的网络策略限制,您可能需要修改 NodePort 的端口范围,本文描述了具体的操作方法。修改kube-apiserver.yaml使用 kubeadm 安装 K8S 集群的情况下,您的 Master 节点上会有一个文件 /etc/kubernetes/manifests/kube-apiserver.yaml,修改此文件,向其中添加 --service-node-p原创 2020-06-10 18:41:58 · 892 阅读 · 0 评论 -
Calico-介绍、原理与使用
Calico-介绍、原理与使用什么是 Calico ?Calico 是一套开源的网络和网络安全方案,用于容器、虚拟机、宿主机之前的网络连接,可以用在kubernetes、OpenShift、DockerEE、OpenStrack等PaaS或IaaS平台上。Calico 组件概述Felix:calico的核心组件,运行在每个节点上。主要的功能有接口管理、路由规则、ACL规则和状态报告接口管理:Felix为内核编写一些接口信息,以便让内核能正确的处理主机endpoint的流量。特别是主机之间的A转载 2020-06-10 10:30:16 · 19986 阅读 · 0 评论 -
k8s踩过的坑
k8s踩过的坑文章目录k8s踩过的坑1、命令自动补全2、kubelet服务无法启动,报错`Failed to start Kubernetes API Server`。3、容器镜像加速4、容器时间和宿主机时间不一致5、创建pod报错No API token found for service account "default", retry after the token is automatically6、 DNS 间歇性 5 秒延迟问题问题说明及原因如何避免这个问题7、k8s证书过期①、说明②、证书过原创 2020-06-10 09:51:38 · 2846 阅读 · 0 评论 -
02-k8s环境部署(生产环境使用kubelet1.16.2)
k8s环境部署文章目录k8s环境部署环境准备安装 docker / kubelet初始化API Server创建 ApiServer 的 Load Balancer(私网)初始化第一个master节点初始化第二、三个master节点方式一:和第一个Master节点一起初始化(两小时内)方式二:第一个Master节点初始化2个小时后再初始化获得 certificate key获得 join 命令初始化第二、三个 master 节点检查 master 初始化结果初始化 worker节点方式一:和第一个Mast原创 2020-06-09 15:46:34 · 4219 阅读 · 0 评论 -
keepalived、haproxy安装
keepalived、haproxy安装所有master节点安装keepalived和haproxyyum install keepalived haproxy -y所有master节点都需配置keepalived,注意需要修改:interface(服务器网卡)、priority(优先级,不同即可)、mcast_src_ip(本机IP)k8s-master01节点keepalived.conf配置如下! Configuration File for keepalivedglobal_defs原创 2020-06-09 15:43:20 · 229 阅读 · 0 评论 -
k8s知识图谱
转载 2019-09-25 08:55:24 · 296 阅读 · 0 评论 -
搭建K8S Ingress
搭建K8S Ingress一、Ingress简介Ingress是个什么鬼,网上资料很多(推荐官方),大家自行研究。简单来讲,就是一个负载均衡的玩意,其主要用来解决使用NodePort暴露Service的端口时Node IP会漂移的问题。同时,若大量使用NodePort暴露主机端口,管理会非常混乱。好的解决方案就是让外界通过域名去访问Service,而无需关心其Node IP及Port。那为什么不直接使用Nginx?这是因为在K8S集群中,如果每加入一个服务,我们都在Nginx中添加一个配置,其实是一原创 2020-05-13 16:42:27 · 426 阅读 · 0 评论 -
prometheus 监控Docker
prometheus 监控Docker启动CAdvisordocker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --volume=/dev/disk/:/dev/disk:ro \ --publish=8080:8080 \ --detach=true \ --na原创 2020-05-13 16:41:28 · 312 阅读 · 0 评论 -
alertmanager 报警工具
alertmanager 报警工具AlertManager 简介Prometheus将数据采集和报警分成了两个模块。报警规则配置在Prometheus Servers上,然后发送报警信息到AlertManger,然后我们的AlertManager就来管理这些报警信息,包括silencing、inhibition,聚合报警信息过后通过email、PagerDuty、HipChat、Slack 等方式发送消息提示。让AlertManager提供服务总的来说就下面3步:安装和配置AlertMa原创 2020-05-13 16:39:55 · 551 阅读 · 0 评论 -
Prometheus监控k8s
k8s监控方案cadvisor+heapster+influxdb+grafana缺点:只能支持监控容器资源,无法支持业务监控,扩展性较差cadvisor/exporter+prometheus+grafana总体流程: 数据采集–>汇总–>处理–>存储–>展示容器的监控prometheus使用cadvisor采集容器监控指标,cadvisor集成在k8s的kubelet中-通过prometheus进程存储-使用grafana进行展现node的监控-通过node_p原创 2020-05-13 16:40:29 · 3750 阅读 · 0 评论 -
Prometheus监控Etcd集群
Prometheus监控Etcd集群聊聊EtcdEtcd是什么Etcd是一个分布式的,一致的key-value存储,主要用于共享配置和服务发现。Etcd是由CoreOS开发并维护,通过Raft一致性算法处理日志复制以保证强一致性。Raft是一个来自Stanford的新的一致性算法,适用于分布式系统的日志复制,Raft通过选举的方式来实现一致性,在Raft中,任何一个节点都可能成为leader。Etcd存储了k8s集群中所有的元数据(以key-value的方式), K8s中所有元数据的增删改查都是由k原创 2020-05-13 16:40:39 · 1534 阅读 · 0 评论