k8s
文章平均质量分 93
k8s
go&Python
开发转运维(devops,prometheus)中(暂时中止),js/app逆向(进度50%),还想写go(后面再学一遍吧)。目标不大,路在脚下
展开
-
K8s Ingress 详解
在 Ingress 中引入 Secret 资源,然后告诉 Ingress 控制器使用 TLS 加密从客户端到负载均衡器的通道。上面基于URL实现路由方案中,就应用到了 ingress rewrite 方案,下面示例插入自定义的 Nginx 配置。Ingress 灰度发布就是通过两套ingress 配置同一个域名,来实现。注: 同一域名,不同的URL调度到不同的 Service。基于Request Header的流量切分。基于Cookie的流量切分。基于服务权重的流量切分。原创 2024-05-31 15:59:36 · 1045 阅读 · 0 评论 -
K8s service 底层逻辑
iptables中的四表五链1. 四个表具备某种功能的集合叫做表。filter: 负责做过滤功能呢nat: 网络地址转换mangle: 负责修改数据包内容raw: 负责数据包跟踪2. 五个链在什么位置执行,能把表放在某个地方执行1) PREROUTING: 主机外报文进入位置,允许的表mangle, nat(目标地址转换,把本机地址转换为真正的目标机地址,通常指响应报文)2) INPUT:报文进入本机用户空间位置,允许的表filter, mangle。原创 2024-05-29 14:11:37 · 880 阅读 · 1 评论 -
K8s service 进阶
service通过selector和pod建立关联,K8s会根据service关联到的pOdIP信息组合成一个endpoint。若service定义中没有selector字段,service被创建时,endpoint controller不会自动创建endpoint。我们可以通过配置清单创建Service,而无需使用标签选择器,而后自行创建一个同名的endpoint对象,指定对应的IP。原创 2024-05-28 15:10:18 · 1725 阅读 · 0 评论 -
K8s deployment 进阶
默认情况下,deployment 的所有上线记录都保存在系统中,以便随时回滚。滚动更新 (RoILingupdate),一次仅更新一批Pod,当更新的Pod就绪后,在更新另一批,直到全部更新完成为止;重建 (Recreate),当更新策略设定为 Recreate,在更新镜像时,它会先杀死正在运行的Pod,等彻底杀死后,重新创建新的RS,然后启动对应的Pod,那么在这个更新过程中,会造成服务一段时问无法提供服务;使用灰度发布的模式,可以及时发现问题,调整问题,以减少影响的速度,保证整体系统的稳定运行。原创 2024-05-24 15:10:37 · 578 阅读 · 0 评论 -
K8s Pod 资源进阶
如果系统中没有BestEffort类别的容器,接下来就轮到BUrstable类别的容器,如果有多个Burstable类别的容器,就看谁的内存资源占用多,就优先干掉谁。DownwardAPI可以让容器获取Pod的相关元数据信息,比如Pod名称,Pod的IP,Pod的资源限制等,获取后通过env、volume的方式将相关的环境信息注入到容器中,从而让容器通 过这些信息,来设定容器的运行特性。k8s 不允许设置精度小于1m 的CPU 资源。容器的用量少,但与自身的Requests值相比,它的占比要大于B容器。原创 2024-05-23 20:04:59 · 1212 阅读 · 0 评论 -
K8s 部署prometheus
可以通过添加storageClass 配置来实现 prometheus-prometheus.yaml 文件中的配置来实现持久化。kube-prometheus 是 github 上开源的整合了 prometheus alertmanager granfana 等监控工具的项目,除此之外,还可以选择修改 prometheus、alertmanager、grafana 中的 spec.type 为 NodePort 方便测试访问。默认的镜像基本上都是国外的源,国内访问不到,需要替换一下镜像id。原创 2024-05-21 19:47:59 · 774 阅读 · 0 评论 -
Helm 包管理器
注: helm 客户端需要下载到安装了 kubectl 并且能执行能正常通过 kubectl 操作 kubernetes 的服务器上, 否则 helm 将不可用。helm 是 Kubernetes 包管理器(类似于yum apt-get brew 这些工具)Helm 管理名为 chart 的 Kubernetes 包的工具。提供执行所有 Helm 操作的逻辑。Helm 是查找、分享和使用软件构件 Kubernetes 的最优方式。独立的 Helm 库封装了 Helm 逻辑以便不同的客户端可以使用它。原创 2024-05-21 10:15:54 · 589 阅读 · 0 评论 -
K8s 身份认证和权限
服务账号与用户账号不同,用户账号是集群中通过了身份认证的人类用户。Service Account Controller 在 namespaces 里管理ServiceAccount,并确保每个有效的 namespaces 中都存在一个名为 “default” 的 ServiceAccount。普通账户是假定被外部或独立服务管理的,由管理员分配 keys,用户像使用 Keystone 或 google 账号一样,被存储在包含 usernames 和 passwords 的 list 的文件里。原创 2024-05-17 14:10:47 · 852 阅读 · 0 评论 -
K8s 高级调度
默认情况下,一个Pod在哪个Node节点上运行,是由Scheduler组件采用相应的算法计算出来的,这个过程是不受人工控制的。但是在实际使用中,这并不满足的需求,我们想控制某些Pod到达某些节点上,就要求了解kubernetes对Pod的调度规则,kubernetes提供了四大类调度方式:**自动调度:**运行在哪个节点上完全由Scheduler经过一系列的算法计算得出**定向调度:**NodeName、NodeSelector。原创 2024-05-16 18:17:16 · 361 阅读 · 0 评论 -
k8s 存储管理
EmptyDir 主要用于一个 Pod 中不同的 Container 共享数据使用的,由于只是在 Pod 内部使用,因此与其他 volume 比较大的区别是,当 Pod 如果被删除了,那么 emptyDir 也会被删除。k8s 中提供了一套自动创建 PV 的机制,就是基于 StorageClass 进行的,通过 StorageClass 可以实现仅仅配置 PVC,然后交由 StorageClass 根据 PVC 的需求动态创建 PV。只有PV的存储空间完成回收,才能供新的PVC绑定和使用。原创 2024-05-15 17:20:01 · 1018 阅读 · 0 评论 -
k8s 配置管理
由于 configmap 我们创建通常都是基于文件创建,并不会编写 yaml 配置文件,因此修改时我们也是直接修改配置文件,而 replace 是没有 --from-file 参数的,因此无法实现基于源配置文件的替换,此时我们可以利用下方的命令实现。对于 subPath 的方式,我们可以取消 subPath 的使用,将配置文件挂载到一个不存在的目录,避免目录的覆盖,然后再利用软连接的形式,将该文件链接到目标位置。需要先创建 configmap 直接用上述命令创建或者通过yaml文件都行。原创 2024-05-13 15:52:50 · 551 阅读 · 0 评论 -
Service 和 Ingress
Yaml 文件案例metadata:labels:app: nginx-svc # service 自己的标签spec:ports:- name: http # service 端口配置的名称protocol: TCP # 端口绑定的协议,支持 TCP、UDP、SCTP,默认为 TCPport: 1080 # service 自己的端口targetPort: 80 # 目标 pod 的端口type: NodePort # 默认是ClusterIP 类型,只能在集群内部使用。原创 2024-05-08 19:47:50 · 1996 阅读 · 0 评论 -
k8s-pod 控制器
如果实际 Pod 数量比指定的多那就结束掉多余的,如果实际数量比指定的少就新启动一些Pod,当 Pod 失败、被删除或者挂掉后,RC 都会去自动创建新的 Pod 来保证副本数量,所以即使只有一个 Pod,我们也应该使用 RC 来管理我们的 Pod。label 与 selector 配合,可以实现对象的“关联”,“Pod 控制器” 与 Pod 是相关联的 —— “Pod 控制器”依赖于 Pod,可以给 Pod 设置 label,然后给“控制器”设置对应的 selector,这就实现了对象的关联。原创 2024-04-24 14:02:06 · 961 阅读 · 2 评论 -
k8s-Pod
但是需要注意,由于 k8s 默认给 pod 的停止宽限时间为 30s,如果我们停止操作会超过 30s 时,不要光设置 sleep 50,还要将 terminationGracePeriodSeconds: 30 也更新成更长的时间,否则 k8s 最多只会在这个时间的基础上再宽限几秒,不会真正等待 50s。探针是容器内应用的监测机制,根据不同的探针来判断容器应用当前的状态,根据生命周期图可以看出探针目前存在三种类型。可以在根容器上设置Ip地址,其它容器都此Ip(Pod IP),以实现Pod内部的网路通信。原创 2024-04-11 14:19:35 · 1114 阅读 · 0 评论 -
K8s 命令行工具
默认,是只能在master 节点上使用kubectl 工具,如果想要在 slave 节点上使用,在master 节点上执行下述命令即可。在搭建集群的时候,我们通过yum 下载了kubeadm kubelet kubectl 三个命令行工具,三个工具有着不同的分工。上述介绍,可以看出,三个工具不同的分工,而我们在日常中,需要接触到最多的就是 kubectl 工具。kubectl 工具能够操作资源细分如下, 这里只介绍常用命令,全部命令参考。原创 2024-04-10 15:30:20 · 1166 阅读 · 0 评论 -
Kubernetes 入门
等功能,相比于其他容器编排工具,如 swarm 、 mesos ,优势在于,能够基于 Google 庞大的生态圈及社区产生的产品。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes 提供了应用部署,规划,更新,维护的一种机制。Master节点主要负责集群的管理和控制功能,如调度、API服务、存储集群状态等。kubelet:运行在每运行在每个节点上的主要的“节点代理”个节点上的主要的“节点代理”原创 2024-04-08 10:58:18 · 989 阅读 · 0 评论