随笔分类 - k8s
摘要:Ingress配置参考:https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/configmap.md Ingress注释参考https://github.com/kub
阅读全文
摘要:1.背景信息 公司游戏官网的项目,集群使用ingress开放出去,后端由于是php语言编写,所以在php的pod里面也需要一个nginx来开放连接。所以本次的路由顺序就如以下: 腾讯云LB → ingress → nginx 所以本次环境,ingress和nginx都需要获取客户端的真实IP。所以本
阅读全文
摘要:1.背景描述 生产环境之前使用aws的eks来作为托管集群,突然看到externaltrafficpolicy参数,听说可以少一次转发,所以对这个参数的理解参考其他文档做一个记录,这里解释一下local模式和cluster模式的区别。 2.什么是external-traffic-policy 在k8
阅读全文
摘要:本次环境背景信息为,需要在k8s里面跑一些前端界面,所以在pod容器中还是使用到了nginx,但是发现,如果nginx worker_processes参数为auto,pod容器会读取node节点的cpu信息来生成线程,如,我pod容器给的资源为0.5核,内存为2G,宿主机node节点为4G8G,那
阅读全文
摘要:在K8S里启动一个容器,该容器的设置的时区是UTC0,但是对于很多人而言,其主机环境并不在UTC0。例如中国客户在UTC8。如果不把容器的时区和主机主机设置为一致,则在查找日志等时候将非常不方便,也容易造成误解。 1.挂载服务器的时间文件 当然,pod内部需要有/etc/localtime这个文件,
阅读全文
摘要:1.Nginx Ingress简介 Kubernetes 通过 kube-proxy 服务实现了 Service 的对外发布及负载均衡,它的各种方式都是基于传输层实现的。在实际的互联网应用场景中,不仅要实现单纯的转发,还有更加细致的策略需求,如果使用真正的负载均衡器更会增加操作的灵活性和转发性能。
阅读全文
摘要:Ingress Nginx默认访问日志都输出到/var/log/nginx/access.log文件中,但是对于一般的生产环境来说,不可能把所有日志都输到一个日志文件中,一般情况都是根据域名分别输出到各个文件中。所以这里区分http指令域默认配置以及单独域名的日志的配置方式。 1.默认日志格式更改为
阅读全文
摘要:1.报错环境 此环境是由于k8s中挂载单个配置文件导致,需要挂载的目标配置文件为/etc/nginx/conf.d/default.conf。 以下演示仅分为2步,首先创建configmap,然后在deployment的配置文件中引用挂载这个configamap到pod中容器为nginx的默认文件上
阅读全文
摘要:1.背景 在Kubernetes v1.14版本的发布说明中,kustomize 成为了 kubectl 内置的子命令,并说明了 kustomize 使用 Kubernetes 原生概念帮助用户创作并复用声明式配置。 那么,kustomize 出现的原因是什么?在kustomize的github i
阅读全文
摘要:1.Kubernetes通信问题 1.容器间通信:即同一个Pod内多个容器间通信,通常使用loopback来实现。 2.Pod间通信:K8s要求,Pod和Pod之间通信必须使用Pod-IP 直接访问另一个Pod-IP 3.Pod与Service通信:即PodIP去访问ClusterIP,当然,clu
阅读全文
摘要:1.前言 近日,Kubernetes 官方发布公告,宣布自 v1.20 起放弃对 Docker 的支持,届时用户将收到 Docker 弃用警告,并需要改用其他容器运行时。并在1.23后不再支持docker。 但Docker目前作为容器镜像构建工具的作用将不受影响,用其构建的容器镜像将一如既往地在集群
阅读全文
摘要:1.前提知识 1.1 生产环境部署K8s集群的两种方式 kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 二进制包 从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。
阅读全文
摘要:1.注意事项及准备工作 EKS分为EKS Master和EKS Node两种角色;EKS Master为全托管,EKS Node为CloudFormation创建 EKS Node若在NAT网络里,一定要注意,NAT网络一定要与外网联通,因为EKS Node连接EKS Master使用外网去连接.(
阅读全文
摘要:1.关闭基于角色的访问控制 如果正在使用一个带有RBAC机制的Kubernetes集群,服务账户可能不会被授权访问API服务器(或只有部分授权)。目前最简单的方式就是运行下面的命令查询API服务器,从而绕过RBAC方式。 $ kubectl create clusterrolebinding per
阅读全文
摘要:pod是所有一切资源的中心,毫无疑问是Kubernetes中最重要的资源。毕竟, 每个应用都运行在pod中。为了确保知道如何开发能充分利用应用所在环境资源的应用,最后再从应用的角度来仔细看一下pod。 1.了解pod的生命周期 可以将pod比作只运行单个应用的虚拟机。尽管在pod中运行的应用和虚拟机
阅读全文
摘要:节点亲缘性规则可以影响pod被调度到哪个节点。但是,这些规则只影响了pod和节点之间的亲缘性。然而,有些时候也希望能有能力指定pod自身之间的亲缘性。 举例来说,想象一下有一个前端pod和一个后端pod, 将这些节点部署得比较靠近,可以降低延时,提高应用的性能。可以使用节点亲缘性规则来确保这两个po
阅读全文
摘要:节点污点可以用来让pod远离特定的节点,尽量在不修改已有pod信息的前提,通过在节点添加污点信息,来拒绝pod在某些节点上的部署。 而现在介绍一种叫做节点亲缘性,通过明确的在pod中添加的信息,来决定一个pod可以或者不可以被调度到哪些节点上。 对比节点亲缘性和节点选择器 在早期版本的Kuberne
阅读全文
摘要:Kubernetes允许你去影响pod被调度到哪个节点。起初,只能通过在pod规范里指定节点选择器来实现,后面其他的机制逐渐加入来扩容这项功能,本章将包括这些内容。 现在要介绍的高级调度的两个特性是节点污点,以及pod对于污点的容忍度,这些特性被用于限制哪些pod可以被调度到某一个节点。只有当一个p
阅读全文
摘要:在kubernetes中,有HPA在需要的时候创建更多的pod实例。但万一所有的节点都满了,放不下更多pod了,怎么办?显然这个问题并不局限于Autoscaler创建新pod实例的场景。即便是手动创建pod,也可能碰到因为资源被已有pod使用殆尽,以至于没有节点能接收新pod的清况。 在这种情况下,
阅读全文
摘要:在运维中,虽然能预先知道负载何时会飙升,或者如果负载的变化是较长时间内逐渐发生的,手动扩容也是可以接受的,但指望靠人工干预来处理突发而不可预测的流量增长,仍然不够理想。 幸运的是,Kubernetes可以监控pod,并在检测到CPU使用率或其他度量增长时自动对它们扩容。如果Kubernetes运行在
阅读全文

浙公网安备 33010602011771号