📅 2021-09-10
前面一节介绍了使用Kubernetes API就是查询和操纵Kubernetes API中的资源对象。本节将学习第一个资源对象Namespace。
很多公司可能都会维护一个规模很大的K8S集群,可能有几百乃至成千上万台机器,这个K8S集群同时要为公司内部的不同部门、不同的业务提供服务,为了隔离区分各部门各业务对集群的使用,需要有一个"虚拟集群"的概念,即namespace。
k8s支持多个虚拟集群,它们依赖于同一个物理集群,这些虚拟集群就是namespace。
...📅 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-07-30
linux memory cgroup子系统
#
限制容器的内存使用需要借助memory cgroup子系统。
在使用cgroups时需要先挂载,例如在centos下memory cgroup子系统被挂载到了/sys/fs/cgroup/memory
下,,在这个目录下是各个memory控制组目录,每个控制组目录下还可以有子目录,各个控制组形成了一个树状的层级关系。
...📅 2021-07-29
容器的单进程模型
#
容器的单进程模型是指推荐在一个容器里只运行一个进程
。
容器的单进程模型
并不是说容器里只能运行一个进程,而是因为容器本身没有管理多个进程的能力,推荐在一个容器里只运行一个进程。
在正常的Linux操作系统里都有个1号进程init,例如CentOS的systemd,所有的其他进程都是1号进程的子进程或者是子进程的子进程。
1号进程具有进程管理能力,例如对僵尸进程的管理。而容器中的1号进程就是容器运行的应用本身,它是没有进程管理能力的,所以推荐在容器中只运行一个进程。
...📅 2021-07-28
在最近25~28节,学习了容器镜像构建的一些实践和技巧,使用Containerd替代Docker后,使用buildkit作为容器镜构建工具,到此对容器镜像构建的学习先告一段落。
在前面第6节学习了容器资源限制背后的技术cgroups的基本概念,并以cgroups cpu子系统为例体验一下手动设置cgroup。
先简单复习一下第6节的内容。使用CGroups可以控制的资源有: CPU、内存、网络、IO、文件设备等,因为计算资源(CPU)是cgroups资源限制中最重要的一种资源之一,本节将详细介绍一下如何使用cpu cgroup限制容器CPU的使用。
...