2021-08-10
OpenResty是一个基于 Nginx与 Lua的高性能Web平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项。
用于方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web 服务和动态网关。Nginx及其模块是使用C语言开发的,为了能够在Nginx之上写业务代码,需要借助OpenResty在Nginx上Lua语言开发业务逻辑。
Lua是单线程多协程(coroutine)的并发模型,与Nginx的多进程单线程+多路IO复用的并发事件驱动模型很配。本文将学习在MacOS下搭建OpenResty的开发环境。
...2021-08-08
kubeadm是Kubernetes官方提供的用于快速安部署Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验kubeadm可以学习到Kubernetes官方在集群配置上一些新的最佳实践。
...2021-08-06
K8S的API和API资源对象
#
通过前面几节的学习,我们已经知道k8s集群中控制平面节点(control-plane)上的核心组件时kube-apiserver
。
kube-apiserver是集群控制管理、资源配置、安全机制的入口,提供了HTTP API服务,以供终端用户、集群内部的组件和服务、集群外部组件相互通信。
...2021-08-05
上一节学习了Kubernetes集群的几种部署方式,推荐在生产环境使用二进制部署的方案。
使用二进制部署的最佳实践是,参考kubeadm对k8s集群的配置管理实践,开发一套ansible playbook,实现二进制k8s集群的自动化部署和配置管理。
本节将讨论一下这套二进制部署方案如何实现集群的高可用。
...2021-08-04
通过上节内容,学习了Kubernetes自己就是一个大型的分布式系统,Kubernetes集群的包含众多组件。集群中的服务器节点分为control-plane
节点和node
节点.
control-plane
节点上需要部署kube-apiserver
、kube-controller-manager
、kube-scheduler
组件。
node
节点上需要部署kubelet
、kube-proxy
组件,另外还需要在node
节点上部署实现了CRI的容器运行时(如: Containerd, CRI-O)。
还需要部署一套etcd集群
作为k8s集群的存储数据库,kube-apiserver使用etcd存储整个集群的状态。
最后还需要在k8s集群中部署一些扩展组件(Addons)包含: 网络和网络策略插件(如Calico)、服务发现插件(如CoreDNS)、可视化管理插件(如Kubernetes Dashboard),才能让整个k8s集群的功能对外可用。
...2021-08-03
上节学习了k8s是什么以及k8s的核心特性。
k8s是一个用于自动部署,扩展和管理容器化应用程序的开源系统,它的核心功能包括: 自动化上线和回滚、服务发现与负载均衡、存储编排、Secret和配置管理、自动装箱、批量执行、IPv4/IPv6 双协议栈、水平扩缩容、自我修复、为扩展性设计。本节将介绍Kubernetes集群的组成及核心组件。
...2021-08-02
Kubernetes的定义
#
引用Kubernetes官方网站上的定义:
Kubernetes是一个用于自动部署,扩展和管理容器化应用程序的开源系统。Kubernetes将多个容器组成一个逻辑单元以便于管理和服务发现。
Kubernetes源自Google内部十五年的生产环境运维经验,同时凝聚了社区的最佳创意和实践。
...
2021-08-01
前面一节初步学习了istio安全管理功能中的认证策略,并使用认证策略配置了服务之间的双向TLS,使用认证策略对暴露到集群外部的http服务开启了基于JWT的终端用户认证。本节将对上节配置JWT终端用户认证时用到一些JWT相关知识做一个补充学习。
...2021-08-01
Prometheus是一个基于时序数据库的开源监控系统。
Prometheus在2016年加入了CNCF(云原生计算基金会),成为继Kubernetes之后CNCF的第二个托管项目。
Prometheus HTTP API
#
Prometheus的监控指标数据metrics存储在其内置的时序数据库中,即其本身也是一个时序数据库,但目前Prometheus还没有提供直接管理数据的功能,默认情况下只能通过Promtheus的HTTP API
查看数据。文档https://prometheus.io/docs/prometheus/latest/querying/api/中是对Prometheus查询API的介绍。其实Prometheus的WebUI使用的就是它的HTTP API,因此在运维开发中如果需要使用Prometheus的HTTP API的话,可以先在Prometheus的WebUI中写好PromQL执行查询,然后借助浏览器的开发者工具查看具体的HTTP API的写法。
...2021-07-31
前面在第9节"Containerd是如何存储容器镜像和数据的"中介绍了,containerd的snapshotter的主要作用就是通过mount各个层为容器准备rootfs。containerd默认配置的snapshotter是overlayfs,overlayfs是联合文件系统的一种实现。 overlayfs将只读的镜像层成为lowerdir,将读写的容器层成为upperdir,最后联合挂载呈现出mergedir。
...