Kubernetes
文章平均质量分 71
本专栏记录了博主所遇到的问题,Kubernetes的详细介绍以及使用。
运维生涯记录
专注于DevOps工具链及经验总结,例如:Docker、K8s、ELK、Jenkins等技术栈,云计算技术分享~~~
展开
-
Kube-Prometheus 监控Ingress-Nginx
Ingress-nginx模板ID:9614、14314。原创 2023-03-30 10:45:47 · 1034 阅读 · 1 评论 -
Kube-Prometheus 监控 ETCD
Kube-Prometheus 监控 ETCD原创 2022-10-19 15:38:13 · 569 阅读 · 0 评论 -
Kubernetes NetworkPolicy
Network Policy提供了基于策略的网络控制,用于隔离应用并减少攻击面。它使用标签选择器模拟传统的分段网络,并通过策略控制它们之间的流量以及来自外部的流量。在使用Network Policy之前,需要注意。原创 2022-10-17 09:43:00 · 311 阅读 · 0 评论 -
Kube-Prometheus 监控 Redis
以上配置了lzulms命名空间的 jmx-metrics Service的服务自动发现,Prometheus会将这个service 的所有关联pod自动加入监控,并从apiserver获取到最新的pod列表,这样当我们的服务副本扩充时也能自动添加到监控系统中。description: “Redis有拒绝连接,请检查连接数配置\n 当前值 = {{ printf “%.0f” $value }}”:如果添加的监控在monitoring命名空间下,则可以忽略这步…stance }} 拒绝连接"原创 2022-10-13 12:47:02 · 1039 阅读 · 0 评论 -
修正kube-prometheus中grafana组件自带dashboard的默认时区
F5刷新页面,再次查看,可以看到所有相关的dashboard显示时间已自动+8,变成了北京时间,比较符合国人习惯~sed命令直接修改,调整时间utc为utc+8。搜索timezone关键字眼。原创 2022-10-08 13:45:39 · 1644 阅读 · 0 评论 -
Kubernetes 1.25 集群搭建
注:keepalived根据脚本返回状态码(0为工作正常,非0不正常)判断是否故障转移。注:keepalived根据脚本返回状态码(0为工作正常,非0不正常)判断是否故障转移。:这里的所有操作每个主机都得执行;原创 2022-09-29 16:45:45 · 2386 阅读 · 2 评论 -
Kubernetes 证书有效期更改
Kubernetes相关证书详细介绍:https://www.cnblogs.com/kuku0223/p/11867391.html在更新证书之前先查看一下当前证书的过期时间Go环境部署:https://studygolang.com/dl/下载Kubernetes源码修改 Kubeadm 源码包更新证书策略修改cert.go文件编译源代码文件更新 kubeadm更新各节点证书至 Master 节点HA集群其余 mater 节点证书更新再次再看证书过期时间...原创 2022-07-07 11:15:38 · 473 阅读 · 0 评论 -
Kubernetes 1.24 单节点安装
注意:containerd-1.6.6-linux-amd64.tar.gz 只包含containerd cri-containerd-cni-1.6.6-linux-amd64.tar.gz 包含containerd以及cri runc等相关工具包,建议下载本包原创 2022-07-05 14:14:32 · 1165 阅读 · 0 评论 -
kube-prometheus 监控 JMX
一、将 Jvm-exporter 整合进我们的应用https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.16.0/jmx_prometheus_javaagent-0.16.0.jar1、下载 Jvm-exporter 存放到Tomcat/bin目录下下载 jmx_exporter 存放Tomcat的bin目录下[root@Jenkins-S ~/Dockerfile/centos-tomcat]# l原创 2022-05-17 14:53:48 · 1298 阅读 · 0 评论 -
解决k8s容器时区(差8小时)不一致问题
部署项目以后日志打印和当前咱们所在的时间差8个小时,应该是国外的标准时区,只能改成咱们自己的时区,我的解决方式是这样的默认k8s是没有开启PodPreset的,需要开启,命令如下vim /etc/kubernetes/manifests/kube-apiserver.yaml在末尾添加以下内容- --runtime-config=settings.k8s.io/v1alpha1=true再在enable-admission-plugins=NodeRestriction下加一个PodPres原创 2022-05-17 08:50:09 · 4363 阅读 · 2 评论 -
Kube-Prometheus 部署
一、概述kube-prometheus 是一整套监控解决方案,它使用 Prometheus 采集集群指标,Grafana 做展示,包含如下组件:The Prometheus OperatorHighly available PrometheusHighly available AlertmanagerPrometheus node-exporterPrometheus Adapter for Kubernetes Metrics APIs (k8s-prometheus-adapter)ku原创 2022-05-16 16:28:22 · 6206 阅读 · 9 评论 -
Helm Harbor 部署
1、导入 Harbor需要的源helm repo add harbor https://helm.goharbor.io2、下载 Harbor Helm目录helm pull harbor/harbor --version 1.7.4查找自己Kubernetes对应的Harbor版本3、压缩 tgz包tar zxf harbor-1.7.4.tgz 4、创建 Harbor所需要的存储类cd harbor/cat <<EOF > harbor-pv-pvc.yaml原创 2022-05-12 10:14:47 · 1279 阅读 · 0 评论 -
Kubernetes Helm部署
认识Helm每次我们要部署一个应用都需要写一个配置清单(维护一套yaml文件),但是每个环境又不一样。部署一套新的环境成本是真的很高。如果我们能够使用类似于yum的工具来安装我们的应用的话那就太好了。Helm就相当于kubernetes环境下的yum包管理工具。Helm重要概念chart:是helm的一个程序包。包含了创建Kubernetes的一个应用实例的必要信息repository: charts仓库,http/https服务config:包含了应用发布配置信息release:是一个原创 2022-04-15 12:11:51 · 1242 阅读 · 0 评论 -
etcd频繁选举leader,导致scheduler、controller-manager组件一直重启
1、controller-manager、scheduler日志中都出现了类似的错误E0913 08:56:23.800130 1 leaderelection.go:324] error retrieving resource lock kube-system/kube-controller-manager: etcdserver: leader changed因为我们的ETCD频繁的更换主,而导致我们两个组件一直在重启2、解决办法2.1、集群中有某些机器时间不同步2.2、扩大原创 2021-09-14 08:33:29 · 9124 阅读 · 0 评论 -
Nginx-Ingress日志持久化
1、1. 介绍nginx-ingress-controller的日志包括三个部分:controller日志:输出到stdout,通过启动参数中的–log_dir可已配置输出到文件,重定向到文件后会自动轮转,但不会自动清理accesslog:输出到stdout,通过nginx-configuration中的字段可以配置输出到哪个文件。输出到文件后不会自动轮转或清理errorlog:输出到stderr,配置方式与accesslog类似。2、落盘2.1、在ingress nginx所在的节点,创建原创 2021-09-12 14:54:11 · 3460 阅读 · 5 评论 -
kube-prometheus监控 controller-manager && scheduler 组件
一、问题描述kube-prometheus 的安装,我们可以看到监控指标大部分的配置都是正常的,只有两个没有管理到对应的监控目标,比如 kube-controller-manager 和 kube-scheduler 这两个系统组件。备注: controller-manager:负责管理集群各种资源,保证资源处于预期的状态。 kube-scheduler:资源调度,负责决定将Pod放到哪个Node上运行。二、问题分析1、kube-scheduler这其实就和 ServiceMonit原创 2021-08-30 10:18:53 · 3512 阅读 · 2 评论 -
k8s中namespace处于Terminating状态
每当删除 namespace 或 pod 等一些 Kubernetes 资源时,有时资源状态会卡在 Terminating,很长时间无法删除,甚至有时增加 --force grace-period=0 之后还是无法正常删除。这时就需要 edit 该资源,或者将该资源导出为 json(通过调用原生接口进行删除), 将 finalizers 字段设置为 [],之后 Kubernetes 资源就正常删除了。查看ns装填# kubectl get nsNAME STATUS .原创 2021-06-16 14:40:13 · 2666 阅读 · 3 评论 -
etcd备份与恢复
ETCD简介ETCD 用于共享和配置服务发现的分布式,一致性的KV存储系统。 ETCD是CoreOS公司发起的一个开源项目,授权协议为Apache。ETCD使用场景ETCD 有很多使用场景,包括但不限于:配置管理服务注册于发现选主应用调度分布式队列分布式锁ETCD 存储 k8s 所有数据信息ETCD 是k8s集群极为重要的一块服务,存储了集群所有的数据信息。同理,如果发生灾难或者 etcd 的数据丢失,都会影响集群数据的恢复。所以,本文重点讲如何备份和恢复数据。ETCD 一些查询原创 2021-06-10 14:55:35 · 1273 阅读 · 1 评论 -
Jenkins 集成k8s 运行Jenkins slave
需求:公司为了节省资源、降低Jenkins master压力,打算把Jenkins jobs在kubernetes上运行,jobs构建完成kubernetes上的pod删除。好了话不多说我们现在开始1、Jenkins基础配置系统管理–全局安全设置需要开启代理协议、然后代理端口在我们后面agent连接需要用到2、安装Kubernetes插件系统管理–插件管理3、创建Kubernetes Namespace与Service Account创建Namespace在Kubenates的上创建j原创 2021-05-13 10:23:34 · 2778 阅读 · 9 评论 -
Rancher管理k8s集群
https://www.cnblogs.com/xiao987334176/p/12965945.html原创 2021-02-25 13:52:03 · 402 阅读 · 0 评论 -
Kubernetes - 安全
------------------------------------------------------------1、机制说明2、认证Authentication1)HTTPS 证书认证2)需要认证的节点两种类型安全性说明证书颁发3)kubeconfig4)ServiceAccount5)Secret 与 SA 的关系总结1、机制说明Kubernetes 作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。API Server 是集群内部各个组件通信的中介,也是外部控制的入口。所以原创 2021-02-19 14:32:52 · 670 阅读 · 1 评论 -
Kubernetes 调度过程
-------------------------------------------------------------1、调度说明简介调度过程自定义调度器2、调度亲和性节点亲和性requiredDuringSchedulingIgnoredDuringExecutionpreferredDuringSchedulingIgnoredDuringExecution合体键值运算关系Pod 亲和性亲和性/反亲和性调度策略比较如下:3、污点Taint 和 Toleration污点(Taint)容忍(Tolera原创 2021-02-05 14:38:13 · 651 阅读 · 0 评论 -
Kubeadm升级 Kubernetes 1.15.12版本
1、查看当前集群版本[root@k8s-master01 ~]# kubectl get nodesNAME STATUS ROLES AGE VERSIONk8s-master01 Ready master 49d v1.15.1k8s-node01 Ready <none> 49d v1.15.1k8s-node02 Ready <none> 49d v1.15.12、升原创 2021-02-04 10:55:44 · 574 阅读 · 2 评论 -
Kubernetes 存储类型
-----------------------------------------------------------------ConfigMap(存储配置文件)ConfigMap 的创建Secret(存储加密信息,例如密码)vloume(共享存储会议)Persistent Volume(PV、PVC)ConfigMap(存储配置文件)ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提原创 2021-02-03 16:51:16 · 867 阅读 · 0 评论 -
Kubernetes Ingress-Nginx
资料信息Ingress-Nginx github 地址:https://github.com/kubernetes/ingress-nginxIngress-Nginx官方网站:https://kubernetes.github.io/ingress-nginx/Ingress-Nginx安装教程:https://www.jianshu.com/p/52889bc8571d原创 2021-02-01 14:38:58 · 1110 阅读 · 0 评论 -
Kubernetes Service
Kubernetes Service介绍Service概念SVC工作原理Service能够提供负载均衡的能力,但是在使用上有以下限制:Service 的类型VIP 和 Service 代理代理模式userspace 代理模式iptables 代理模式ipvs 代理模式ClusterIPService概念Kubernetes Service定义了这样一种抽象:一个Pod的逻辑分组,一种可以访问它们的策略 —— 通常称为微服务。这一组Pod能够被Service访问到,通常是通过Label Selector原创 2021-02-01 10:37:50 · 350 阅读 · 0 评论 -
Kubernetes 资源控制器类型介绍
Kubernetes 中内建了很多 controller(控制器),这些相当于一个状态机,用来控制 Pod 的具体状态和行为。有deployment daemonsets replicasets replicationcontroller原创 2021-01-26 15:55:21 · 234 阅读 · 0 评论 -
Kubernetes Job,CronJob 控制器
JobJob 负责批处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个 Pod 成功结束特殊说明:spec.template格式同PodRestartPolicy仅支持Never或OnFailure单个Pod时,默认Pod成功运行后Job即结束.spec.completions标志Job结束需要成功运行的Pod个数,默认为1.spec.parallelism标志并行运行的Pod的个数,默认为1spec.activeDeadlineSeconds标志失败Pod的重试最大时间,超过原创 2021-01-26 15:54:49 · 300 阅读 · 0 评论 -
Kubernetes DaemonSet 控制器
什么是 DaemonSetDaemonSet 确保全部(或者一些)Node 上运行一个 Pod 的副本。当有 Node 加入集群时,也会为他们新增一个 Pod 。当有 Node 从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod使用 DaemonSet 的一些典型用法:运行集群存储 daemon,例如在每个 Node 上运行glusterd、ceph在每个 Node 上运行日志收集 daemon,例如fluentd、logstash在每个 Node 上原创 2021-01-26 15:41:35 · 260 阅读 · 0 评论 -
Kubernetes Deployment控制器
RS 与 RC 与 Deployment 关联RC (ReplicationController )主要的作用就是用来确保容器应用的副本数始终保持在用户定义的副本数。即如果有容器异常退出,会自动创建新的Pod来替代;而如果异常多出来的容器也会自动回收Kubernetes 官方建议使用 RS(ReplicaSet )替代 RC (ReplicationController )进行部署,RS 跟 RC 没有本质的不同,只是名字不一样,并且 RS 支持集合式的 selectorapiVersion: ext原创 2021-01-26 15:37:39 · 332 阅读 · 0 评论 -
Kubernetes状态实例
Pod 中只有一个容器并且正在运行,容器成功退出记录事件完成如果 restartPolicy 为:Always:重启容器;Pod phase 仍为 RunningOnFailure:Pod phase 变成 SucceededNever:Pod phase 变成 SucceededPod 中只有一个容器并且正在运行。容器退出失败记录失败事件如果 restartPolicy 为:Always:重启容器;Pod phase 仍为 RunningOnFailure:重启容器;Pod原创 2021-01-26 14:00:09 · 316 阅读 · 0 评论 -
Kubernetes 资源清单与Pod生命周期
Kubernetes 资源清单介绍什么是资源K8S中存在哪些资源什么是资源K8s中所有的内容都抽象为资源,资源实例化之后,叫做对象K8S中存在哪些资源名称空间级别:工作负载型资源(workload):Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、CronJob(ReplicationController在v1.11版本被废弃)服务发现及负载均衡型资源(ServiceDiscoveryLoadBalance):Service、Ingr原创 2021-01-25 17:52:49 · 334 阅读 · 1 评论 -
Kubernetes Init c探测
Init模板apiVersion: v1kind: Podmetadata: name: myapp-pod labels: app: myappspec: containers: - name: myapp-container image: busybox command: ['sh','-c','echo The app is running! && sleep 3600'] initCon原创 2021-01-25 17:32:16 · 264 阅读 · 0 评论 -
Kubernetes修改Pod数量
Kubernetes默认Pod数量是110#修改kubelet pod数量 并在启动命令尾部添加变量 $KUBELET_NODE_MAX_PODS 如下:[root@k8smaster ~]# vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf 添加: Environment="KUBELET_NODE_MAX_PODS=--max-pods=600" ExecStart=/usr/bin/kubelet $KUBEL原创 2021-01-25 11:17:27 · 5064 阅读 · 0 评论 -
Kubernetes 连接不上Harbor
问题现象注:记录一个Kubernetes问题,在一次测试的时候偶然发现Kubernetes不管这么都无法从Harbor仓库拉取镜像,哪怕已经Login或daemon.json文件指定私有仓库还是不行,话不多说直接开始模拟现象。在这里为了更好的模拟现象我们先编写一个nginx.yml文件apiVersion: apps/v1 # apiVersion是当前配置格式的版本kind: Deployment # kind是要创建的资源类型,这里是Deploymnetmetadat原创 2021-01-22 16:41:15 · 2359 阅读 · 4 评论 -
Kubernetes网络通讯方式
网络通讯模式https://blog.csdn.net/qq_41999455/article/details/104246356Kubernetes 的网络模型假定了所有Pod 都在一个可以直接连通的扁平的网络空间中,这在GCE(Google Compute Engine)里面是现成的网络模型,Kubernetes 假定这个网络已经存在。而在私有云里搭建Kubernetes 集群,就不能假定这个网络已经存在了。我们需要自己实现这个网络假设,将不同节点上的Docker 容器之间的互相访问先打通,然后运原创 2021-01-21 14:02:40 · 324 阅读 · 0 评论 -
Kubernetes 无状态服务和有状态服务
无状态服务是指该服务运行的实例不会在本地存储需要持久化的数据,并且多个实例对于同一个请求响应的结果是完全一致的。多个实例可以共享相同的持久化数据。例如:nginx实例,tomcat实例等相关的k8s资源有:ReplicaSet、ReplicationController、Deployment等,由于是无状态服务,所以这些控制器创建的pod序号都是随机值。并且在缩容的时候并不会明确缩容某一个pod,而是随机的,因为所有实例得到的返回值都是一样,所以缩容任何一个pod都可以。有状态服务宠物和牛的转载 2021-01-21 11:11:42 · 1786 阅读 · 0 评论 -
Kubernetes Pod概念
Pod类型自主式Pod:当Pod宕机不会重新打开一个新的Pod控制器管理的Pod:当Pod宕机,如果不满足当前的期望值则会重新打开一个PodPod概念注:1、同一个Pod中的多个容器可以共享Pod级别的存储卷Volume,Volume可以定义为各种类型,多个容器各自进行挂载,将Pod的Volume挂载为容器内部需要的目录。2、同一Pod里容器端口不能冲突3、同一Pod网络地址是一样的4、举例:如果同一Pod之间里的容器需要互相通信则写localhost即可Pod控制器类型Rep原创 2021-01-21 11:24:47 · 328 阅读 · 0 评论 -
Kubernetes 1.18 集群搭建
注:在这里我就不加Node了因为自己的环境机器有限所以无法演示,但是Node加入Master很简单就是一个命令Join在后面我会说到。原创 2021-01-19 15:38:54 · 923 阅读 · 1 评论 -
Kubernetes 基本概念与组件
Kubernetes 最初源于谷歌内部的 Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes 的目标旨在消除编排物理 / 虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的 workflows 和更高级的自动化任务。 Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器原创 2021-01-18 14:59:02 · 457 阅读 · 1 评论