Kubelet运行机制解析
Kubelet运行机制解析 基于1.29 在K8s集群中,在每个Node上都会启动一个kubelet进程,进程用于处理Master下发Node任务,管理Pod以及Pod中人容器。 每个kubelet进程都会在API Server注册Node信息,定期向Master汇报Node资源使用情况,并且通过cAdvisor监控容器和Node资源 自从K8s v1.28开始,kubelet通过--config-dir支持一个插件配置目录,在启动时,kubelet会合并以下几个部分的配置 命令行参数(优先级最低) kubelet配置文件 排序的插件配置文件 在命令行中指定的特性门控–feature-gates(优先级最高) Node通过kubelet启动参数--register-node决定是否向API Server注册自己,还可能有以下的参数 --api-servers:API Server的配置 --kubeconfig:kubeconfig文件,用于访问API Server的安全配置文件 资源管理深入理解节点可分配资源(Node Allocatable Resourc...
kube-proxy运行机制解析
kube-proxy运行机制解析 基于1.29 第一代Proxy一开始是一个真实的TCP/UDP代理,类似于HAProxy,负责转发从Service到Pod的访问流量,这被称为“userspace”模式 第二代Porxy从v1.2版本开始,K8s将iptables作为kube-proxy的默认模式,iptables模式组作为kube-proxy都默认模式 iptables模式,不再起到数据层面的Porxy作用,client向Service的请求流量通过iptables的NAT规则 直接发送到目标Pod,不再经过kube-proxy的转发,kube-proxy只承担控制层面的功能,即通过API Server的Watch接口实时跟踪Service与Endpoint的变更信息,并更新Node上相应的iptables规则 kube-proxy针对于Service和Pod创建一些主要的iptables规则如下: KUBE-CLUSTER-IP:在masquerade-all=true或ClusterCIDR被指定的情况下对Service Cluster IP地...
Kube-ApiServer架构解析
Kube-ApiServer架构解析 基于1.29 API层:主要以REST方式提供各种API,除了K8s的CUED资源还有健康检查、日志等等 访问控制层:当有客户端访问API时,访问控制层负责对用户身份鉴权、校验 Registry:K8s把所有的资源对象都保存在注册表,针对不同的资源对象,都定义了资源对象的类型、如何创建资源对象,如何转换资源对象,以及如何资源编码为JSON或ProtoBuf格式进行存储 etcd:用于持久化存储K8s资源对象的KV数据库 K8s Proxy APIK8s Proxy API 的作用是代理REST请求,把API Server收到的REST请求转发到K8s进程的REST端口 该进程由kubelet负责响应 这里的信息,来自于Node,而不是ETCD所以可能存在偏差 K8s Porxy API路径如下: 12345678# 列出指定Node的所有Pod/api/v1/nodes/{node}/proxy/pods # 列出指定Node都所有性能指标统计信息/api/v1/nodes/{node}/p...
K8s集群版本更新
K8s集群版本更新在K8s集群更新,需要考虑不断运行的业务容器运行,通常流程,先更新Master上的K8s服务版本,在逐个更新Node的K8s服务版本 以二进制部署的K8s集群更新更新步骤一般如下: 获取官网的K8s二进制安装包 更新Master的kube-apiserver、kube-controller-manager、kube-scheduler 更新隔离Node,等待全部容器工作停止掉Pod,更新kubelet、kube-proxy 服务文件 恢复业务应用到流量到更新完成的Node上 以Kubeadm部署的K8s集群的版本更新可以通过kubeadm upgrade更新 更新kubeadm 本身 1yum install -y kubeadm-1.21.0 --disableexcludes=kubernetes 查看kubeadm版本,kubeadm version 查看K8s更新的计划,内容,会检查系统的配置 1kubeadm upgrade plan 执行升级 1kubeadm upgrade apply Node也进行升级 1kubeadm upgra...
K8s安装-基于二进制文件(高可用)
K8s安装-基于二进制文件(高可用) 基于1.29 通过kubeadm可以快速搭建一个K8s集群,但是调整K8s集群参数,以及安全设置、高可用模式,就需要二进制安装 Master高可用部署架构Master高可用需要注意几个方面: Master的kube-apiserver、kube-controller-manager和kube-schedule服务以多实例方式部署,至少有3个节点,节点需要为奇数,至少3个节点 Master启用基于CA认证的HTTPS安全机制 etcd至少有3个节点的集群部署模式 etcd集群启用了基于CA认证的HTTPS安全机制 Master启用了RBAC授权模式 创建CA根证书为了启用etcd和K8s服务基于CA认证的安全机制,首先需要配置CA证书 etcd和K8s制作CA证书的时候,都需要基于CA根证书 12openssl genrsa -out ca.key 2048openssl req -x 509 -new -nodes -key ca.key -subj "/CN=192.168.18.3" -days 36500...
K8s安装-基于kubeadm
K8s安装-基于kubeadm 基于1.29 系统要求 软硬件 最低要求 推荐配置 主机资源 若集群中有1-5个Node:Master:2c+2GB;Node:1c Master:4C和16GB;Node实际运行 Linux Kernel内核在v3.10以上 CoreOS7.9 etcd 版本v3以上 etcdv3 容器运行时 各种cri containerd v1.7 主要注意centos7默认开启防火墙,而K8s和各个Node有大量通信,推荐开启以下端口 组件 默认端口 API Server 6443 Controller Manager 10257 Scheduler 10259 Kubelet 10250;10255(只读端口) etcd 2379(供客户端访问);2380(etcd集群节点之间访问) 集群的DNS服务 53(UDP);53(TCP) 对于其他组件,可能还需要开放其他端口,比如CNI Calico需要开放179端口 123# 关闭防火墙systemctl disable firewalldsy...
nerdctl的使用
nerdctl的使用什么是nerdctlnerdctl是containerd官方提供的兼容Docker命令行的工具,支持Docker Cli所有命令,并且支持dokcer-compose 设计初衷不是Docker Cli复制品,希望促进containerd创新实验的发展,Docker不支持这些实验特性如镜像延迟加载,镜像加密 安装nerdctl官方提供俩种安装包 精简安装包:nerdctl--linux-amd64.tar.gz 仅包含nerdctl的二进制文件,以及rootless模式下的辅助安装脚本,需要解压到/user/local/bin目录 完整安装包:nerdctl-full--linux-amd64-.tar.gz。包含containerd、CNI、runc、BUildKit、rootlesskit等完整组件,需要解压到/user/local目录 cat share/doc/nerdctl-full/README.md可以看见组件版本 下载nerdctl完整安装包 12wget ...
ctr的使用
ctr的使用 安装完containerd之后,ctr也安装好 ctr上containerd提供的客户端,内置在containerd中 查看支持命令 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455[root@iZbp1ebizftw2vpbpm737wZ ~]# ctr --help NAME: ...
crictl
crictl什么是crictlCRI的CLI工具-crictl 安装与配置安装12wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.32.0/crictl-v1.32.0-linux-amd64.tar.gztar -zxvf crictl-v1.32.0-linux-amd64.tar.gz -C /usr/local/bin 配置 crictl连接containerd 默认情况下(没有配置crictl配置文件),crictl在Linux节点下会通过几种sock连接运行时的endpoint docker:unix:///var/run/dockershim.sock containerd: unix:///run/contianerd/containerd.sock Ciro: unix:///run/crio/crio/so...
containerd-安装
containerd-安装官方提供三种类型安装包 containerd:仅包含containerd相关二进制精简安装包,格式为containerd-${VERSION}.${OS}-${ARCH}.tar.gz cri-containerd:包含containerd、cri与runc工具的安装包,格式为cri-containerd-${VERSION}.${OS}-${ARCH}.tar.gz cri-containerd-cni:包含containerd、cri、runc、cni工具的安装包,格式为cri-containerd-cni-${VERSION}.${OS}-${ARCH}.tar.gz 目前主流支持window和linux平台 大致流程安装 下载containerd release安装包 1wget https://github.com/containerd/containerd/releases/download/v1.7.24/cri-containerd-cni-1.7.24-linux-amd64.tar.gz 安装包解压 1tar -zxvf ...