
k8s
文章平均质量分 64
码农-文若书生
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
k8s学习(三十八) 使用OpenTelemetry+jaeger实现链路追踪
OpenTelemetry 可以用于从应用程序收集数据。它是一组工具、API 和 SDK 集合,我们可以使用它们来检测、生成、收集和导出遥测数据(指标、日志和追踪),以帮助分析应用的性能和行为。原创 2024-08-19 14:59:40 · 2839 阅读 · 1 评论 -
k8s学习(三十七)centos下离线部署kubernetes1.30(高可用)
在k8s-master01 init后提示的不带control-plane的命令后添加–cri-socket unix:///var/run/cri-dockerd.sock。在初始化k8s集群的使用,IP填写的vip,这样安装好k8s集群之后,kubectl客户端而言,访问的vip:16443端口,该端口是nginx监听的端口,nginx会进行反向代理到3个master节点上的6443端口。(6)添加controlPlaneEndpoint处配置,配置为VIP:16443。原创 2024-04-27 09:31:06 · 2383 阅读 · 4 评论 -
k8s学习(三十六)centos下离线部署kubernetes1.30(单主节点)
在 Kubernetes v1.24 及更早版本中,可以在 Kubernetes 中使用 Docker Engine, 依赖于一个称作 dockershim 的内置 Kubernetes 组件。本次安装使用的centos系统 ipset已经安装了不再安装,仅安装ipvsadm,如果使用的没有ipset请自行安装。按下面的配置注释一些信息添加或修改中文注释附近的配置, 其中192.168.115.120是NTP服务节点的IP。将K8S依赖的镜像上传至k8s-normal-master节点,执行。原创 2024-04-23 22:27:36 · 2939 阅读 · 0 评论 -
k8s学习(三十五)飞腾2000+麒麟V10离线部署metrics-server
在有网机器上从网站https://github.com/kubernetes-incubator/metrics-server下载。拷贝metrics-server-master.zip至主节点(如果机器没有unzip,解压后再拷贝)以下操作中:192.168.100.202为docker registry的地址。查看metrics-server是否运行成功。拷贝其到离线机器K8S的master节点。打标签,IP替换为registry的IP。在麒麟V10机器下载镜像。主节点上运行如下命令。原创 2023-04-17 07:48:11 · 1065 阅读 · 0 评论 -
k8s学习(三十四)飞腾2000+麒麟V10离线部署k8s
需要在飞腾芯片和麒麟V10操作系统下安装k8s,目前在飞腾2000下安装成功,飞腾2500还没有成功,现介绍飞腾2000下的安装流程。原创 2023-03-22 21:25:20 · 10845 阅读 · 1 评论 -
k8s学习(三十三)修改K8s内存泄漏错误cannot allocate memory
修改Kubernetes报错cannot allocate memory的问题原创 2022-06-13 19:39:37 · 2492 阅读 · 0 评论 -
k8s学习(三十二)K8s部署Loki日志收集
Loki是受Prometheus启发由Grafana Labs团队开源的水平可扩展,高度可用的多租户日志聚合系统。 开发语言: Google Go。它的设计具有很高的成本效益,并且易于操作。使用标签来作为索引,而不是对全文进行检索,也就是说,你通过这些标签既可以查询日志的内容也可以查询到监控的数据签,极大地降低了日志索引的存储。系统架构十分简单,由以下3个部分组成 :1.Loki 是主服务器,负责存储日志和处理查询 。2.promtail 是代理,负责收集日志并将其发送给 loki 。3.Grafa.原创 2021-10-20 17:59:07 · 10377 阅读 · 8 评论 -
k8s学习(三十一)K8s部署Mysql高可用集群
确认安装前已经安装好StorageClass,可参考:https://blog.youkuaiyun.com/u011943534/article/details/1008875301、准备镜像docker pull mysql:5.7docker save -o mysql-5.7.tar mysql:5.7将msyql-5.7.tar拷贝至K8s镜像服务器所在的节点docker load -i mysql-5.7.tardocker tag mysql:5.7 172.16.10.190:80/lib原创 2021-06-10 15:37:56 · 2981 阅读 · 3 评论 -
k8s学习(三十)K8s部署MinIO集群
确认安装前已经安装好StorageClass,可参考:https://blog.youkuaiyun.com/u011943534/article/details/1008875301、准备镜像docker pull minio/minio:RELEASE.2021-05-27T22-06-31Zdocker save -o minio.tar docker.io/minio/minio:RELEASE.2021-05-27T22-06-31Z拷贝至服务器docker load -i minio.tardo原创 2021-06-03 17:02:07 · 3133 阅读 · 5 评论 -
k8s学习(二十九) RocketMq集群(双主双从-同步)
确认安装前已经安装好StorageClass,可参考:https://blog.youkuaiyun.com/u011943534/article/details/1008875301、准备jdk镜像,并拷贝到服务器docker pull java:8-alpine2、制作rocketmq镜像下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/将”rocketmq-all-4.8.0-bin-release.zip”拷贝至服务器,解压修改bi原创 2021-05-27 09:34:22 · 1178 阅读 · 1 评论 -
k8s学习(二十八) K8s部署单节点mysql-statefulset方式
以下步骤的前提是已部署好storageclass,可参考https://blog.youkuaiyun.com/u011943534/article/details/1008875301、下载mysql(已经下载好)docker pull mysql:5.7docker save -o mysql-5.7.tar mysql:5.72、导入镜像将msyql-5.7.tar拷贝至K8s镜像服务器所在的节点docker load -i mysql-5.7.tardocker tag mysql:5.7 17原创 2021-05-20 09:38:18 · 1064 阅读 · 0 评论 -
k8s学习(二十七) K8s部署单节点mysql-deployment方式
以下步骤的前提是已部署好storageclass,可参考https://blog.youkuaiyun.com/u011943534/article/details/1008875301、下载mysqldocker pull mysql:5.7docker save -o mysql-5.7.tar mysql:5.72、导入镜像将msyql-5.7.tar拷贝至K8s镜像服务器所在的节点docker load -i mysql-5.7.tardocker tag mysql:5.7 172.16.10原创 2021-05-20 08:48:15 · 1609 阅读 · 0 评论 -
k8s学习(二十六) K8s 解决/var/lib/docker/containers下日志多的问题
问题:K8s部署的服务会不断生成日志,最终导致/var/lib/docker/containers下生成很多日志,导致磁盘存满解决:1、自己清理编写cleanlog.sh#!/bin/sh# drift echo "========= start clean /var/lib/docker/containers/ logs ============"logs=$(find /var/lib/docker/containers/ -name *-json.log)for log in $原创 2021-05-16 15:37:49 · 2219 阅读 · 0 评论 -
k8s学习(二十五) K8s 解决容器内时区不一致的问题
使用K8s启动容器,有可能出现系统时区不一致的问题,因为默认 系统时间为 UTC 世界时间 (Universal Time Coordinated),一般本地所属时区为 CST(+8 时区,上海时间),时间上刚好相差 8 个小时。这就导致了,我们服务启动后,获取系统时间来进行相关操作,例如存入数据库、时间换算、日志记录等,都会出现时间不一致的问题,所以很有必要解决掉容器内时区不统一的问题。在打镜像时,可以通过指定系统时区来解决这个问题Dockerfile:FROM java:8-alpineAD.原创 2021-04-02 09:45:38 · 4622 阅读 · 0 评论 -
k8s学习(二十九) k8s中部署kube-keepalived-vip
在当前的kubernetes群集中使用service为每个节点上分配一个端口(相同的端口),并将通过该端口的流量代理到端点。问题是它不能提供高可用性,因为需要事先知道正在运行的节点的IP地址,并且在发生故障的情况下,可以将Pod移到其他节点。 这是ipvs可以提供帮助的地方。 这个想法是为每个服务定义一个IP地址,以将其公开到Kubernetes集群之外,这里使用kube-keepalived-vip实现。1、准备kube-keepaliaved-vip的镜像docker pull aledbf/k.原创 2021-02-05 09:03:26 · 3380 阅读 · 0 评论 -
istio学习(一) 离线部署istio
前提必须部署k8s,这里我的k8s版本是1.52.1,istio版本使用的1.5.5一、准备istio离线包1、下载istio下载:https://github.com/istio/istio/releases/download/1.5.5/istio-1.5.5-linux.tar.gz2、下载镜像docker pull istio/proxyv2:1.5.5docker pull grafana/grafana:6.5.2docker pull jaegertracing/all-in.原创 2021-01-26 15:03:05 · 3522 阅读 · 1 评论 -
spring-cloud-kubernetes学习(一) 编写第一个spring-cloud-kubernetes例子并在kubernetes中测试
在springcloud生态中,服务治理与注册中心等都有相应的组件。如eureka、hystrix,ribbon等。但是kubernetes组件也有服务发现、负载均衡的组件,我们可以借助于sping-cloud-kubernetes组件为我们提供的服务发现、负载均衡等来摈弃像eureka这样的注册中心。本文主要通过构建两个spring cloud 服务来演示spring-cloud-kubernetes组件如何做服务的发现,负载均衡等。项目地址:https://gitee.com/quanwenz/m.原创 2020-12-06 16:41:30 · 1300 阅读 · 0 评论 -
k8s学习(二十八) k8s部署kuboard
1、获取kuboard.yaml从网址https://kuboard.cn/install-script/kuboard.yaml下载apiVersion: apps/v1kind: Deploymentmetadata: name: kuboard namespace: kube-system annotations: k8s.eip.work/displayName...原创 2019-12-02 10:14:25 · 3890 阅读 · 0 评论 -
k8s学习(二十七) k8s部署grafana
1、 准备镜像包在有网络机器下载镜像:docker pull grafana/grafana:5.3.4docker save -o grafana.tar grafana/grafana:5.3.4docker pull busyboxdocker save -o busybox.tar busybox2、 创建PVmkdir -p /data/testgdvi /etc/ex...原创 2019-11-04 21:48:51 · 11674 阅读 · 0 评论 -
k8s学习(二十六) 使用prometheus监控常用资源对象
1、监控apiserverapiserver 作为 Kubernetes 最核心的组件,当然他的监控也是非常有必要的,对于apiserver 的监控我们可以直接通过 kubernetes 的 Service 来获取:[root@master prometheus]# kubectl get servicesNAME TYPE CLUSTER-IP EXTER...原创 2019-11-01 09:02:43 · 897 阅读 · 0 评论 -
k8s学习(二十五) 使用prometheus监控集群节点
1、 获取node-exporter已经打好在”用到的离线包/node-exporter.tar”在有网机器下载镜像docker pull prom/node-exporter:v0.16.0docker save -o node-exporter.tar prom/node-exporter:v0.16.0将tar包拷贝至有网的机器2、 将node-exporter放入离线镜像服务...原创 2019-10-28 16:27:07 · 898 阅读 · 0 评论 -
k8s学习(十九) helm安装和简单使用
对于单体服务,部署一套测试环境我相信还是非常快的,但是对于微服务架构的应用,要部署一套新的环境,就有点折磨人了,微服务越多、你就会越绝望的。虽然我们线上和测试环境已经都迁移到了kubernetes环境,但是每个微服务也得维护一套yaml文件,而且每个环境下的配置文件也不太一样,部署一套新的环境成本是真的很高。Helm就相当于kubernetes环境下的yum包管理工具。1、下载helmht...原创 2019-09-25 11:28:03 · 753 阅读 · 0 评论 -
k8s学习(六) 使用pod hook
Pod Hook 是由 kubelet 发起的,当容器中的进程启动前或者容器中的进程终止之前运行,这是包含在容器的生命周期之中。我们可以同时为 Pod 中的所有容器都配置 hook。Kubernetes 为我们提供了两种钩子函数:PostStart:这个钩子在容器创建后立即执行。但是,并不能保证钩子将在容器ENTRYPOINT之前运行,因为没有参数传递给处理程序。主要用于资源部署、环境准备等...原创 2019-08-28 14:49:48 · 1341 阅读 · 0 评论 -
k8s学习(二十四) 使用prometheus监控kubernetes集群应用
1、修改部署traefik时的traefik.toml添加[metrics] [metrics.prometheus] entryPoint = "traefik" buckets = [0.1, 0.3, 1.2, 5.0]2、更新configmap[root@k8s-node1 ingress-tls]# kubectl delete configmap trae...原创 2019-09-30 10:35:06 · 1580 阅读 · 0 评论 -
k8s学习(十) k8s执行任务job/cronjob
Job负责处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。而CronJob则就是在Job上加上了时间调度。1、jobapiVersion: batch/v1kind: Jobmetadata: name: job-demospec: template: metadata: name: job-demo spec: ...原创 2019-08-30 14:52:41 · 2198 阅读 · 0 评论 -
k8s学习(九) 使用metrics-server 进行hpa扩容
Horizontal Pod Autoscaling(Pod水平自动伸缩),简称HPA。HAP通过监控分析RC或者Deployment控制的所有Pod的负载变化情况来确定是否需要调整Pod的副本数量,这是HPA最基本的原理。当你创建了HPA后,HPA会从metrics-server或者用户自定义的监控获取每一个一个Pod利用率或原始值的平均值,然后和HPA中定义的指标进行对比,同时计算出需要伸...原创 2019-08-30 10:41:11 · 2019 阅读 · 0 评论 -
k8s学习(八) 初始化容器 init container
Init Container就是用来做初始化工作的容器,可以是一个或者多个,如果有多个的话,这些容器会按定义的顺序依次执行,只有所有的Init Container执行完后,主容器才会被启动。我们知道一个Pod里面的所有容器是共享数据卷和网络命名空间的,所以Init Container里面产生的数据可以被主容器使用到的。1、创建init-demo.yamlapiVersion: v1kin...原创 2019-08-29 10:47:07 · 15307 阅读 · 0 评论 -
k8s学习(七) 使用pod健康检查
在Kubernetes集群当中,我们可以通过配置liveness probe(存活探针)和readiness probe(可读性探针)来影响容器的生存周期。1 kubelet 通过使用 liveness probe 来确定你的应用程序是否正在运行,通俗点将就是是否还活着。一般来说,如果你的程序一旦崩溃了, Kubernetes 就会立刻知道这个程序已经终止了,然后就会重启这个程序。而我...原创 2019-08-28 15:54:10 · 1529 阅读 · 0 评论 -
k8s学习(五) 创建静态pod
静态 Pod 直接由特定节点上的kubelet进程来管理,不通过 master 节点上的apiserver。无法与我们常用的控制器Deployment或者DaemonSet进行关联,它由kubelet进程自己来监控,当pod崩溃时重启该pod,kubelete也无法对他们进行健康检查。静态 pod 始终绑定在某一个kubelet,并且始终运行在同一个节点上。 kubelet会自动为每一个静态 p...原创 2019-08-27 08:22:49 · 3294 阅读 · 2 评论 -
k8s学习(四) k8s使用nodeport方式配置service对外暴露服务
Pod是有生命周期的,使用凡人皆有一死来描述pod很贴切,当一个工作节点(node)销毁时,节点上运行的pods也会被销毁, ReplicationController会动态地在其他节点上创建Pod来保持应用程序的运行,每一个Pod都有一个独立的IP地址,甚至是同一个节点上的Pod,可以看出Pod的IP是动态的,它随Pod的创建而创建,随Pod的销毁而消失,这就引出一个问题:如果由一组Pods组...原创 2019-08-26 10:43:24 · 15820 阅读 · 2 评论 -
k8s学习(三) k8s集群内部署一个docker应用deployment
1、获取一个springboot 应用jar包2、将jar包打成docker镜像Dockerfile如下:FROM java:8-alpineADD docker-hello-world-0.0.1-SNAPSHOT.jar app.jarEXPOSE 8080ENTRYPOINT ["java","-jar", "/app.jar"]打镜像:docker build -t he...原创 2019-08-26 09:48:14 · 1427 阅读 · 0 评论 -
k8s学习(二) k8s集群内安装dashboard
dashboard是k8s官方的UI界面,这个界面能显示所有的工作负载(workload),包括运行的Nodes,Services,Pods,Jobs,Relica sets等k8s资源。1、 下载 dashboard镜像,并将镜像打入本地镜像服务器由于墙的原因,与上一篇安装k8s集群一样,先下载镜像,打入本地库docker pull mirrorgooglecontainers/kub...原创 2019-08-22 15:11:41 · 1075 阅读 · 2 评论 -
k8s学习(十一)使用configmap
ConfigMap 资源对象使用key-value形式的键值对来配置数据,这些数据可以在Pod里面使用1、定义configmap的yamlkind: ConfigMapapiVersion: v1metadata: name: config-demo namespace: defaultdata: data.1: hello data.2: world redis...原创 2019-09-02 13:43:23 · 1046 阅读 · 0 评论 -
k8s学习(十二) 使用secret
ConfigMap是用来存储一些非安全的配置信息,如果涉及到一些安全相关的数据的话用ConfigMap就非常不妥了,因为ConfigMap明文存储的,这个时候使用Secret,Secret用来保存敏感信息,例如密码、OAuth 令牌和 ssh key等等,将这些信息放在Secret中比放在Pod的定义中或者docker镜像中来说更加安全和灵活。Secret有三种类型:Opaque:bas...原创 2019-09-02 16:11:33 · 5467 阅读 · 0 评论 -
k8s学习(十三) 部署一个完整的应用
部署一个helloworld应用,引用mysql,使用健康检测、动态扩容、容器初始化等功能1、helloworld-all.yaml文件:--- apiVersion: extensions/v1beta1 kind: Deploymentmetadata: name: mysql-deploy namespace: hello labels: app: m...原创 2019-09-10 13:45:55 · 1151 阅读 · 0 评论 -
k8s学习(二十三) 安装Prometheus监控
rometheus 是 Google 内部监控报警系统的开源版本,是 Google SRE 思想在其内部不断完善的产物,它的存在是为了更快和高效的发现问题,快速的接入速度,简单灵活的配置都很好的解决了这一切,而且是已经毕业的 CNCF 项目。1、下载https://prometheus.io/download/2、运行解压后进入目录编辑prometheus.yml# my globa...原创 2019-09-27 14:07:20 · 1216 阅读 · 0 评论 -
k8s学习(二十二) yaml配置文件各个属性详解
apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型 metadata: #资源的元数据/属性 name: test-pod #资源的名字,在同一个namespace中必须唯一 labels: #设定资源的标签 k8s-app: apache vers...原创 2019-09-26 09:19:27 · 3128 阅读 · 0 评论 -
k8s学习(二十一) 亲和性调度
亲和性调度可以分成软策略和硬策略两种方式:软策略就是如果你没有满足调度要求的节点的话,pod 就会忽略这条规则,继续完成调度过程,说白了就是满足条件最好了,没有的话也无所谓了的策略硬策略就比较强硬了,如果没有满足条件的节点的话,就不断重试直到满足条件为止,简单说就是你必须满足我的要求,不然我就不干的策略。1、通过nodeSelector 和label选择节点调度查看节点的label[...原创 2019-09-26 09:15:48 · 506 阅读 · 0 评论 -
k8s学习(二十) helm的基本使用
1、创建仓库查看仓库[root@k8s-node1 test]# helm repo listNAME URL stable https://kubernetes-charts.storage.googleapis.comlocal http://127.0.0.1:8879/charts...原创 2019-09-25 14:44:01 · 843 阅读 · 0 评论 -
k8s学习(十八) 使用traefik实现ingress
Ingress其实就是从 kuberenets 集群外部访问集群的一个入口,将外部的请求转发到集群内不同的 Service 上,其实就相当于 nginx、haproxy 等负载均衡代理服务器。1、部署Traefik创建安全验证apiVersion: v1kind: ServiceAccountmetadata: name: traefik-ingress namespace:...原创 2019-09-25 08:46:07 · 5798 阅读 · 2 评论