Operator Pattern 用 Go 扩展 Kubernetes 的最佳实践
启动后会通过 reflector 的 list & watch 机制获取某种资源的 全量 objects。list 可以简单理解为一个 HTTP GET 请求,watch 为一 个 HTTP/2 长连接 Cache 如何保持与 API Server 一致性 list & watch 机制中,list 获取 API Server 中数据的一份快照,并记 录 ResourceVersion 版本信息,watch 开始,获取后 续的增量数据。 watch 通过网络异步(asynchronous)获取增量数据,所以 cache 提供 的是最终一致性(eventual consistency)。 期间遇到网络、API Server 报错等异常时,会有重试机制 Controller-runtime 的 Informer 增加一段逻辑:如果上层 GET 某个 object 没有对应的 informer, controller-runtime 中的对象有两种可能,即及时(latest)与过 期(stale),我们生成的执行计划有3种可能的动作,即 Create、Update 和 Delete。 进一步的,stale 对象意味着本地 cache 落后于 API Server 中对象若干版本,也就是说有一段增量更新还没有 复制过来,那么这段增量可以用一个 c/u/d (即 create/update/delete)排列组合来表达。 形式化的,将“+”运算定义为集合 {c0 码力 | 21 页 | 3.06 MB | 9 月前3Go Programming Pattern in Kubernetes Philosophy
“OO” 1.API objects stores in etcd 2.Control loops (Sync Loop) to reconcile API objects Example kubelet SyncLoop kubelet SyncLoop proxy proxy 1 Pod created etcd scheduler api-server Example Object added etcd scheduler api-server Example kubelet SyncLoop kubelet SyncLoop proxy proxy 3.1 New Pod detected 3.2 Bind Pod to a node etcd scheduler api-server Example kubelet SyncLoop kubelet SyncLoop proxy proxy 4.1 Detected bind operation 4.2 Start Pod on this machine etcd scheduler api-server Pattern 1: Controller • Control everything by Controller • Level driven, not edge driven edge0 码力 | 29 页 | 2.12 MB | 1 年前3Kubernetes开源书 - 周立
reference 可 帮助您找到所有对象的spec格式。 原⽂ https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/ 06-理解K8s对象 22 名称 Kubernetes REST API中的所有对象都会被Name和UID明确标识。 对于⽤户提供⾮唯⼀属性,Kubernetes提供 ⽣产共享客户端库/⼯具(⽤于部 署、管理、内省)变得更加困难。 原⽂ https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ 10-Annotation 30 K8s架构及基本概念 架构图 Master(主节点) K8s⾥的Master指是集群控制节点,⼀个K8s集群需要有⼀个M Master通常会部署在⼀个独⽴的服务器或虚拟机上,它是整个集群的⾸脑,如果Master宕机或不可⽤,那么我们所有的 控制命令都将会失效。 Master节点上运⾏着如下的关键进程: API Server:K8s⾥所有资源增删改查等操作的对外⼊⼝,也是集群控制的⼊⼝进程,它提供了HTTP RESTful API 接⼝给客户端以及其他组件调⽤。 Controller Manager:Controller0 码力 | 135 页 | 21.02 MB | 1 年前3Apache OpenWhisk + Kubernetes: A Perfect Match for Your Serverless Platform
Serverless= Backend as a Service Functions as a Service • Zero server ops – No provisioning, updating, and managing server infrastructure. – Flexible Scalability • No compute cost when idle § K8s is a production- grade container orchestration platform § Declarative management of objects using configuration files. § More introductions, go to • K8s official document http://kubernetes ensures that all (or some) Nodes run a copy of a Pod • In OpenWhisk, we deploy strictly mangaged objects as StatefulSet or DaemonSet: – Controller – Invoker – Kafka Jobs • A job creates one0 码力 | 24 页 | 3.53 MB | 1 年前3QCon北京2018/QCon北京2018-《Kubernetes-+面向未来的开发和部署》-Michael+Chen
about cluster • Kubernetes Front-end Control Plane • Provides RESTful interface • Returns state objects as JSON • Provides core control loops for platform • Watches shared state through apiserver • external access • Interfaces with local iptables The Kubernetes Runtime Components • Runtime Objects Component Description Pods A grouping of one or more containers as an atomic unit Namespaces A Kubernetes Master etcd API-Server Scheduler NSX Container Plugin (NCP) NSX Infra NSX Manager API Client Kubernetes Adapter Kubernetes Master etcd API-Server Scheduler Architecture • NSX-T0 码力 | 42 页 | 10.97 MB | 1 年前3KubeCon2020/腾讯会议大规模使用Kubernetes的技术实践
container Ø High-performance Ø Safe autoscaling decisions Ø Personalized configuration of VWA objects Ø Cooperate with HPA through events Vertical Workload AutoScaler (VWA) Recommender Prometheus Deploy HPAPlus-Controller independently. Ø High Performance. Ø Personalized configuration of HPA objects. Ø Calculate replicas based on pod resource request or limit. Ø Cooperate with CronHPA and VWA Kube-ApiServer Aggregator Prometheus Adaptor Prometheus Metrics Server Kubelet/cAdvisor External Metric Adaptor 3rd Monitor Server � Exportors CronHPA-Controller cooperate VWA-Controller Event0 码力 | 19 页 | 10.94 MB | 1 年前3QCon北京2017/智能化运维/Self Hosted Infrastructure:以自动运维 Kubernetes 为例
kubelet Installation - master - SSH - Install scheduler - Install controller manager - Install API server - Config them correctly - Start them Installation - etcd - SSH - Install etcd - Config them correctly Kubernetes? ● Kubernetes manages own core components ● Core components deployed as native API objects Self-hosted k8s Architecture Why Self-host Kubernetes? ● Operational expertise around app management etcd Kubelet Bootkube API Server Scheduler Controller Manager etcd Kubelet Bootkube API Server Scheduler Controller Manager etcd Kubelet Bootkube API Server Scheduler Controller Manager0 码力 | 73 页 | 1.58 MB | 1 年前3多租户Kubernetes VM Solutions for Multi-Tenant Applications
REAL vm (traditional vm app) Focus : container security Virtlet Virtlet is a Kubernetes runtime server which allows you to run VM workloads, based on QCOW2 images. https://github.com/Mirantis/virtlet com/Mirantis/virtlet Virtlet compares with other CRI Virtlet Architecture Daemonset Pod Virtlet Deploying Objects DaemonSet ConfigMap ClusterRole/Role Service Account virtlet solution Virtlet Pros define VM0 码力 | 33 页 | 3.34 MB | 1 年前3涂小刚-基于k8s的微服务实践
k8s平台接入流程 k8s环境空间和应用名规范 k8s-namespace k8s-service k8s-app-name app-name ai-test ai-dc-server ai-dc-server ai-dc-servedr ai-preview ai-dc-web ai-dc-web ai-dc-web ai-prod ai-dc-api ai-dc-api ai-dc-api 关联。 k8s-app-name 容器host应用名称,deployment 名,通过配置文件关键字关联业务线应用名称,保持应用和k8s之间的关联。 规范 范例 应用名称 ai-dc-server ai-dc-web ai-dc-api 镜像版本和git版本库规范 制定git版本规范,开发提交合并master代码,git版本库和业务版本进行关联,出了问题好定位问题。 采用do 实例kube-apiserver,kube- scheduler和kube-controller- manager 其中三个控制平台节点运行 keeplived和haproxy,node节点 和api-server通讯通过vip对 接,haproxy将流量转发至 apiserver 每个控制平面节点创建一个本 地etcd成员,该etcd成员仅与 kube-apiserver该节点通信 kubernetes0 码力 | 19 页 | 1.34 MB | 1 年前3k8s操作手册 2.3
#取消所有swap挂载 ⑥NTP服务需要开启,使用集群内的ntp server,确保集群时间的一致性 # yum install chrony -y # systemctl enable chronyd # systemctl start chronyd # cat > /etc/chrony.conf <server 10.99.1.1 iburst prefer dri�file kubeadm init --kubernetes- version=v1.19.4 \ --apiserver-adver�se- address=10.99.1.51 \ # api server地址 --pod-network-cidr=10.244.0.0/16 \ # pod容器网段 --service-cidr=10.7.0.0/16 \ # service网段,即cluster kubeadm init --kubernetes- version=v1.28.2 \ --apiserver-adver�se- address=10.99.1.51 \ # api server地址 --pod-network-cidr=10.244.0.0/16 \ # pod容器网段 --service-cidr=10.7.0.0/16 \ # service网段,即cluster 0 码力 | 126 页 | 4.33 MB | 1 年前3
共 49 条
- 1
- 2
- 3
- 4
- 5