![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
K8S & 云原生
详尽理解下一代的'操作系统', 未来已来!
静谧之心
专业摩的佬
业余吉他手
退役喷子
展开
-
每期一个小窍门:全世界最简单的go exporter 例子
调用链路我大概描述下。原创 2024-08-07 16:35:09 · 202 阅读 · 0 评论 -
每期一个小窍门: 使用kubebuilder 生成operator脚手架 并操作控制自定义CRD副本数 (下)
然后这边 kubectl get pod 可以看到如我们所愿 有5个启动的pod 对应了上方的部署文件。通过拿到的运行期状态 来跟部署文件的期望状态对比 然后进行不同业务响应就ok了。写好这个文件后 直接通过自带的make命令 install 到k8s中。有了这个dacar类型之后 我们徒手制作一个这个类型的部署文件。由于这个是demo 我们就不把operator部署到集群侧了。在这个文件中定义 dacar 这个crd的spec。我们发现可以查看到这个crd了。apply 这个文件后。原创 2024-08-03 15:30:52 · 316 阅读 · 0 评论 -
每期一个小窍门: 使用Gin 与 client-go 操作k8s (中)
本文承接上文后面应该还会有个下 应该是个operator的全程demo。原创 2024-07-30 20:19:16 · 430 阅读 · 0 评论 -
每期一个小窍门: 使用client-go 操作k8s (上)
然后把apiserver公网暴露出来 并拿到apiserver的远程conf文件。身边要有一个k8s集群 阿里云ask可以免费使用 注意是ask 不是ack。好了 各位再见 下次再会。运行结果: 可以通的。原创 2024-07-27 16:20:24 · 210 阅读 · 0 评论 -
解决 go mod tidy 加载模块超时
如果go mod tidy 加载模块超时。原创 2023-08-23 13:48:36 · 1591 阅读 · 0 评论 -
每期一个小窍门: 自己实现 go语言的对象pool 对比自带的 sync.pool 区别分析
对象池在一些特定情况下 可以提高我们程序运行的效率(如果你用的位置合适)首先我们自己手写一个对象池运行结果:前十个可以正常取出正常放回还可以再正常取出但是只有十个 如果连续取第十一个会 timeout。原创 2023-08-20 10:00:00 · 77 阅读 · 0 评论 -
D2: 基于go实现的一个DSL 绘图工具 高手效率神器
D2 是一种声明式流程图的领域特定语言 (DSL),声明式只需要描述你想要的流程图即可,它就会自动生成对应的图像。原创 2023-08-19 15:08:48 · 473 阅读 · 0 评论 -
谈谈 SRE 和 DevOps 的区别
SRE 全称 Site Reliability Engineering.DevOps 全称 Development and OperationsDevOps是开发拥抱运维,开发人员需要学习运维的相关知识能够承担运维的工作. 本质偏向开发Googel的SRE是运维侧发起的,运维去拥抱开发,运维的人员需要具备一定的开发能力. 本质偏向运维...原创 2022-06-21 15:41:49 · 486 阅读 · 0 评论 -
深入理解 go协程 调度机制
Go 启动的时候,会有一个守护线程 G0,计数,会记录每个 Processor 运行完成的协程的数量,如果发现某一个 Processor 在一段时间内没有发生变化(阻塞),就会往这个协程的任务栈里面插入一个特殊的标记,当协程运行遇到非内联函数,就会读到这个标记,将自己中断下来,插到等待协程队列的队尾,切换到其他队列的队尾。内核线程是由CPU直接调度,如果一个用户线程对应一个内核线程,调度效率来看肯定是快于多个用户线程对应一个内核线程的。当协程被中断的时候,它在寄存器中的运行状态,也会保存在协程对象中;原创 2023-08-14 14:08:58 · 598 阅读 · 0 评论 -
Istio 架构的演进,为什么会有 istiod ?
尽管之前一直被人抱怨存在各种问题,但 Istio 社区的开发脚步没有停歇,我们看到了一次又一次的版本发布从未间断,伴随着各种大大小小的功能更新和优化。就网易杭研而言,轻舟微服务将 Istio 引入生产环境也是极为审慎,事实上也曾遇到了运维和开发的困惑,而 istiod 架构设计的回归让我们彻底松了一口气,拥抱 Istio 实现服务网格的思路更加坚定。原创 2022-10-10 11:33:06 · 1937 阅读 · 0 评论 -
深入了解 istio: 调整 max_body_size
nginx 可以设置 client_max_body_size,那么在 istio 场景下如何调整客户端的最大请求大小呢?原创 2022-09-14 09:42:53 · 664 阅读 · 0 评论 -
通过生产环境流量录制/线下回放 配合基于云原生的灰度发布 实现保质保量的持续集成
流量回放/复制, 从测试的角度, 本质是:通过把线上的真实流量复制到线下环境,解决测试环境模拟不够真实,或覆盖不够全面的问题。原创 2022-08-15 10:04:57 · 815 阅读 · 1 评论 -
每期一个小窍门: 灰度重启 mongodb 复制集
k8s/非容器化 的 mongodb复制集的灰度重启原创 2022-08-01 15:55:27 · 495 阅读 · 0 评论 -
每期一个小窍门: jenkins 生产环境流水线 标准构建方案
Jenkins 生产线 的比较正规的流水线解决方案原创 2022-07-26 17:06:45 · 323 阅读 · 0 评论 -
每期一个小窍门: k8s容器亲和性的小例子
很多情况下 我们希望某些pod 禁止运行到一些worker节点上, 可以利用容器亲和性来实现例如下面 设置此pod调度在非ip为10.0.40.3的节点上, 而其他节点都可以 spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressio原创 2022-05-27 15:55:24 · 524 阅读 · 3 评论 -
Docker 反向导出 DockerFile
最近发现个有意思的东西 可以让docker可以反向导出dockerfile在 Docker 的日常运维过程中,可能会构建很多不同的镜像。维护一些基础 Docker 镜像,有些时候没有保存 Dockerfile,但是想查看一些公开仓库的 Docker 镜像是怎么构建的,或因为长时间不维护找不到当时构建镜像的 Dockerfile,或者因为网络无法查看时,就非常希望能从镜像导出 Dockerfile,这时可以试试whaler 命令先设置别名:alias whaler="docker run -t --rm原创 2021-12-09 15:46:36 · 1863 阅读 · 2 评论 -
深入理解k8s operator 机制
Kubernetes 提供了一种扩展机制,允许我们定义自己的资源类型,称为自定义资源。在集群上运行一个 pod 来监控某种类型的自定义资源并基于它管理其他资源,这就是 Operator模式。原创 2021-12-07 16:33:43 · 5288 阅读 · 0 评论 -
k8s 部署高可用mysql 主从集群
主从的cm主从的svc , statefulset都被我合并到一个文件里了,应该是可以用的注意修改storageclass的名称注意apply的时候 -n 指定ns#application/mysql/mysql-configmap.yamlapiVersion: v1kind: ConfigMapmetadata: name: mysql labels: app: mysqldata: master.cnf: | # Apply this config on原创 2021-12-02 14:05:27 · 1721 阅读 · 4 评论 -
k8s 改变默认 StorageClass
列出你的集群中的 StorageClasses:kubectl get storageclass输出类似这样:NAME PROVISIONER AGEstandard (default) kubernetes.io/gce-pd 1dgold kubernetes.io/gce-pd 1d默认 StorageClass 以 (default) 标记。标记默认 StorageCla原创 2021-11-24 16:25:24 · 2683 阅读 · 1 评论 -
k8s亲测最好用的可视化 Kuboard 部署教程
直接干货吧这个kuboard对比原装的dashboard, 多了些资源的可视化编辑, 很像阿里云,阿里云, dashboard, kuboard, 都可以可视化快速exec pod 但是华为云不能这里做一个可视化好用程度的排序吧(仅供娱乐)阿里云 > kuboard > dashboard >= 华为云安装 kuboard(确保已经安装好了 metric-server )wget https://kuboard.cn/install-script/kuboard.yaml所原创 2021-10-28 14:16:47 · 5607 阅读 · 1 评论 -
通过地址重写, 解决ingress在使用非标准端口(80, 443)时, 引起的重定向丢失端口问题
最近在搭建私有云k8s集群时, 由于一些安全原因, 没有使用标准端口(80, 443), 发现已部署在pod中的项目出现了重定向丢失端口的问题, 经过排查, 发现本质上不是丢失了端口, 而是默认重定向到了标准端口, http的重定向会默认到80, https会重定向到443端口, 下面我分享一下自己的解决方案方案:简单来说, 要实现ingress在非标准端口正常工作, 要保证以下几个结果, 这里我们以30052代替80, 30054代替443ingress-controller 的pod 需要工作在指原创 2021-10-28 13:39:36 · 3117 阅读 · 1 评论 -
全网最简单的 harbor 安装
安装dockerdocker, docker-compose, 是安装harbor的前置依赖:首先看我之前安装docker的博文(包括centos8, 8以下的看文章后面就好) 安装docker composesudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose原创 2021-10-15 13:47:17 · 1295 阅读 · 2 评论 -
想变得更强吗? 5分钟带你了解云原生核心 -- Istio (上)
a原创 2021-10-11 16:22:49 · 911 阅读 · 1 评论 -
FQDN:(Fully Qualified Domain Name)全限定域名
FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称。(通过符号“.”)例如:主机名是host01,域名是mycompany.com,那么FQDN就是host01.mycompany.com。全限定域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。从全限定域名中包含的信息可以看出主机在域名树中的位置。DNS解析流程:首先查找本机HOSTS表,有的直接使用表中定义,没有查找网络连接中设置的DNS 服务器由他来原创 2021-10-09 15:30:10 · 2020 阅读 · 0 评论 -
nginx配置静态资源缓存, 同时配合k8s的SVC(core dns)实现负载均衡
最近发现以上线的tomcat web服务静态资源加载比较慢, 而且每次都会重新从服务端拉取, 这里肯定是有缺陷并且需要改进的. 然后决定使用nginx解决, 通过配置静态资源缓存实现动静分离, 同时发现k8s的dns解析果然简单粗暴, 非常实用, 直接无侵入式的实现了nginx的负载均衡(通过在server块的地址里直接配置SVC), 搞定!后面我也会单独写一篇k8s的coredns/kubedns的工作原理, 和大家一起探讨.下面是详细的配置文件Nginx.conf# 静态资源加速, 动静分离原创 2021-06-17 14:17:03 · 1782 阅读 · 2 评论 -
使用Jenkins实现重构项目并部署项目到阿里k8s环境运行
第一步比如我有一个项目A, 并且jenkins里配置的构建分支名称为 --> branchA所以在构建前, 需要将最新的master分支merge到branchA分支, 保证gctest拥有全部最新的代码变更.第二步以这个A项目为例,进入到Jenkins主页面点击我们的namespace 这个是我们的safefood集群的的namespase点击A项目进入到A项目管理页面后, 点击BuildNow下方会有个类似的进度条, 表示该系统正在构建, 可以点击进去, 查看详细构建lo原创 2021-06-09 18:10:56 · 740 阅读 · 0 评论 -
已经用k8s来部署运维各个微服务的组件,是否可以不用整套微服务?
https://www.zhihu.com/question/430048535/answer/1582533126可以,但要看情况。以主流的SpringCloud为例,其提供的能力与Kubernetes既有重合也有互补,我们举几个例子逐一分析微服务各个核心组件。微服务网关网关几乎不涉及业务部分,各种实现也非常多,选哪个看业务契合度了。但Spring Cloud Gateway不能作为Kubernetes Ingress Controller,如果用不兼容Ingress的框架作为网关层,可能会损失一原创 2021-05-06 13:37:36 · 30914 阅读 · 14 评论 -
k8s 一图看懂StorageClass pv pvc关系
集群管理员预先创建存储类(StorageClass);用户创建使用存储类的持久化存储声明(PVC:PersistentVolumeClaim);存储持久化声明通知系统,它需要一个持久化存储(PV: PersistentVolume);系统读取存储类的信息;系统基于存储类的信息,在后台自动创建PVC需要的PV;用户创建一个使用PVC的Pod;Pod中的应用通过PVC进行数据的持久化;而PVC使用PV进行数据的最终持久化处理。...原创 2021-04-09 11:30:34 · 2410 阅读 · 1 评论 -
k8s服务发现 headless svc和 普通svc 区别
首先我们把 svc 本身看做为首, svc的endpoints对应的pods看作是尾普通 svc我们可以看作是有头svc, 表示svc本身也有一个地址(cluster ip), dns查询时只会返回Service的地址, 具体client访问的是哪个Real Server,是由iptables来决定的headless svcheadless 无头, 无头表示这个svc的负载均衡是没有clusterip的, dns查询会如实的返回2个真实的endpointheadless优点第一种:自原创 2021-04-07 17:42:55 · 3332 阅读 · 2 评论 -
k8s port nodeport targetport containerport 区别
portpod 暴露出来的端口 相对于k8s内部的ipnodeportpod 上层svc对外暴露出的端口, 相对与外部物理机targetportport内部对接容器的端口, targetPort是pod上的端口,从port/nodePort上来的数据,经过kube-proxy流入到后端pod的targetPort上,最后进入容器。containerport镜像暴露的地址, 在pod内部的docker(容器实现)暴露的端口...原创 2021-04-02 12:03:42 · 837 阅读 · 1 评论 -
kubernetes安装Jenkins 挂载NAS 并汉化
首先我们要建立一个namespacekubectl create namespace kube-opspvc pv关于pv 我用的是阿里的k8s nas 所以点点点就好, 这里提供了yml创建方式, 一样的, 注意pvc的名字要和deployment声明的一致apiVersion: v1kind: PersistentVolumemetadata: name: opspvspec: capacity: storage: 20Gi accessModes: - Read原创 2021-04-02 11:10:20 · 1096 阅读 · 1 评论 -
k8s dashboard token过期时间太短的解决方案
点击红框位置, 编辑yaml配置文件args这里增加一行 - '--token-ttl=43200'原创 2021-03-30 16:13:31 · 3752 阅读 · 3 评论 -
K8s 安装可视化dashboard, 并授权登录,(附跳过chrome https证书验证)
不多说, 直接apply 下面文件kubectl apply -f dashboard.yaml# Copyright 2017 The Kubernetes Authors.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of t原创 2021-03-30 12:04:28 · 1552 阅读 · 3 评论