首页 > 其他分享 >"浅尝"Kubernetes

"浅尝"Kubernetes

时间:2024-02-20 16:35:41浏览次数:21  
标签:容器 apiserver Kubernetes 浅尝 pod K8S 节点 资源

kubernetes Google旗下的容器跨主机编排工具,占据了80%以上的市场份额,已经成为容器编排工具的事实标准,简称K8S。

K8S与docker的区别:

ansible #应用级别的跨主机编排工具

docker #容器引擎 容器运行时

dockerfile #构建镜像

docker-swarm #docker旗下的容器跨主机编排工具,是实现在多机上docker容器集群管理调度的工具

docker-compose #单机容器集群编排工具

mesos+marathon #mesos:分布式资源管理框架,可以对集群中的多台主机硬件资源进行统一调度和管理 marathon:mesos的容器编排框架,用来调度和运行容器服务

K8S 是属于主从设备模型(Master-Slave 架构),即有 Master 节点负责集群的调度、管理和运维,Slave 节点是集群中的运行工作负载节点。 在 K8S 中,主节点一般被称为 Master 节点,而从节点则被称为 Worker Node 节点,每个 Node 都会被 Master 分配一些工作负载。

K8S的架构:

K8S有 master 和 worker node 两类节点

 

master节点(负责K8S集群的管理和资源调度等运维工作) 有 apiserver、controller-manager、scheduler、etcd 组件
apiserver:是所有服务请求的统一访问入口
controller-manager:控制器管理器,负责管理K8S各种资源对象的控制器;通过apiserver监控整个K8S集群的资源状态,并确保资源始终处于预期的各种状态
scheduler:资源调度器,负责pod资源的调度,通过调度算法(预选/优选策略)为要部署的pod选择最合适的 node 节点
etcd:K8S集群的数据库,是一种键值对存储结构的分布式数据库,负责存储K8S集群所有的重要信息,仅apiserver拥有访问和读写权限

worker node节点 (负责运行工作负载,即容器拥有) 组件有 kubelet、kube-proxy、容器引擎(dockers、containerd等)
kubelet:接收apiserver发来的请求,创建管理pod和容器,跟容器引擎交互实现对容器生命周期的管理;收集node节点的资源信息和pod的运行状态发送给apiserver
kube-proxy:作为service资源的载体,实现对pod的网络代理,负责维护pod集群网络规则和四层代理工作
容器引擎:运行管理容器

 

K8S创建pod资源的工作流程:

 

 

用户通过客户端发送创建pod的请求给apiserver
apiserver接收到请求后,会先把请求信息写入到etcd中保存,再找controller-manager根据请求信息的资源预设模板创建pod资源
controller-manager通过apiserver找scheduler调度新创建的pod,scheduler通过调度算法的预选策略和优选策略筛选出最合适的node节点进行调度
scheduler通过apiserver找对应的node节点上的kubelet去创建和管理pod,kubelet会根据容器引擎交互来管理pod及其容器的生命周期
用户还可以通过apiserver在kube-proxy上写入iptables或ipvs网络规则,创建service资源,实现对pod集群网络代理

核心资源对象:

pod:是k8s能够创建和管理的最小单位。一个pod里可以包含一个或多个应用容器,同一个pod里的容器之间共享网络、存储等资源。
pod控制器:
deployment:部署无状态应用(没有实时数据需要存储);同时也负责管理replicaset(维持pod副本数始终符合预期状态)和pod(容器化的应用程序)
statefulset:部署有状态应用(有实时数据需要存储)
daemonset:在所有node节点上都部署同一种的pod
job:一次性的部署短期任务的pod(执行完任务后会自动退出的pod容器)
cronjob:周期性的部署短期任务的pod(执行完任务后会自动退出的pod容器)

label:标签,将一个或多个键值对标识关联到某个资源对象,用于资源对象的分组查询和筛选


label selector:标签选择器,用于查询和筛选拥有相关标签的资源对象


annotation:注释,用作用资源对象的注释信息;还可以在一些特殊的资源对象里用作于设置额外的功能特性


service:在k8s集群内部,为通过标签选择器相关联的一组pod提供一个统一的访问入口(clusterip),只支持四层代理转发 通过标签选择器关联pod的标签,从而自动发现相关pod的端点(podip:port)

ingress:作为k8s集群外部的访问入口,可定义ingress规则根据用户请求的域名或url请求路径转发给指定的service,支持七层代理转发 ingress通过配置规则将不同的域名或url路径关联不同的service资源

name:资源名称

namespace:命名空间,用于隔离资源名称的。在同一个命名空间中,同类型的资源对象的名称是唯一的

资源配置信息:

apiversion:资源对象的在k8s中使用的api接口版本


apiversion:资源对象的在k8s中使用的api接口版本


kind:资源对象的类型


metadata:指定资源对象的元数据信息,比如name指定资源名称、namespace指定命名空间、annotation指定注释、label指定标签


spec:指定资源对象的资源配置清单(配置属性),比如副本数、镜像、网络模式、存储卷、label selector标签选择器


status:资源对象在当前的运行状态信息

 

标签:容器,apiserver,Kubernetes,浅尝,pod,K8S,节点,资源
From: https://www.cnblogs.com/chenjw0608/p/18023406

相关文章

  • Kubernetes (K8S) 一
    K8Sansible#应用级别的跨主机编排工具docker#容器引擎容器运行时dockerfile#构建镜像docker-compose#单机容器集群编排工具docker-swarm#Docker旗下的容器跨主机编排工具,是实现在多级上Docker容器集群管理调度的工具mosos|marathonmosos:分布式资......
  • kubernetes创建的ingress规则不生效
    kubernetes创建的ingress规则不生效解决方法一:给创建ingress的yaml文件添加ingressClassName参数:​ 查看ingressclass[root@k8s-master012-4]#kubectlgetingressclassNAMECONTROLLERPARAMETERSAGEnginxk8s.io/ingress-nginx<none>22h......
  • kubespray部署kubernetes集群【转】
    kubespray部署kubernetes集群1、kubespray简介Kubespray是开源的部署生产级别Kubernetes集群的项目,它整合了Ansible作为部署的工具。可以部署在AWS,GCE,Azure,OpenStack,vSphere,Packet(Baremetal),OracleCloudInfrastructure(Experimental)或Baremetal上。高可用集群可组......
  • 二机制安装Kubernetes 1.29 高可用集群(5)--node节点配置
    1.1所有k8s-node节点安装cri-dockerrpm-ivhcri-dockerd-0.3.10-3.el8.x86_64.rpm1.2修改cri-docker启动文件,将默认的pod启动镜像地址修改为国内仓库源#vi/usr/lib/systemd/system/cri-docker.service将如下部分ExecStart=/usr/bin/cri-dockerd--container-runtime-en......
  • 二机制安装Kubernetes 1.29 高可用集群(4)--master节点配置
    1.1在k8s-master01上解压kubernetes可执行文件到/usr/local/bin目录tar-zxfkubernetes-server-linux-amd64.tar.gz--strip-components=3-C/usr/local/binkubernetes/server/bin/kube{let,ctl,-apiserver,-controller-manager,-scheduler,-proxy}注:--strip-components=3......
  • 二机制安装Kubernetes 1.29 高可用集群(3)--etcd集群配置
    1.在所有etcd节点解压安装包tar-zxfetcd-v3.5.12-linux-amd64.tar.gzcpetcd-v3.5.12-linux-amd64/etcd/usr/local/bin/&&cpetcd-v3.5.12-linux-amd64/etcdctl/usr/local/bin/#查看版本信息#etcdctlversionetcdctlversion:3.5.12APIversion:3.52.1在所有et......
  • 二机制安装Kubernetes 1.29 高可用集群(2)--haproxy节点配置
    1.1在所有haproxy节点安装haproxyyum-yinstallhaproxy1.2在所有haproxy节点创建haproxy配置文件cat>/etc/haproxy/haproxy.cfg<<EOFglobalmaxconn3000ulimit-n16384log127.0.0.1local0errstatstimeout30sde......
  • 二机制安装Kubernetes 1.29 高可用集群(1)--系统初始配置
    软件环境描述说明:OS:openEuler22.03LTSSP3kubernetes:1.29.2etcd:3.5.12calico:3.27.0cri-docker:0.3.10cfssl/cfssljson/cfssl-certinfo:1.64haproxy:2.2.6keepalived:2.2.4网段规划:物理主机:192.168.83.0/24      ServiceIP:10.66.0.0/16   PodIP:172.31.0.0......
  • 二机制安装Kubernetes 1.29 高可用集群(6)--calico网络组件和CoreDNS配置
    1.部署Calico网络组件1.1k8s-master节点上下载calico的创建文件下载地址:https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstartwgethttps://raw.githubusercontent.com/projectcalico/calico/v3.27.2/manifests/tigera-operator.yamlwgethttps://ra......
  • kubernetes对接kadalu使用GlusterFS作为存储
    1.安装glusterfsgluster官网:https://www.gluster.org部署参考:https://cloud-atlas.readthedocs.io/zh-cn/latest/kubernetes/storage/k8s_gluster.html前期需要准备3个节点作为glusterfs集群slave,并且每个节点至少需要个提供1块磁盘。节点名称ip地址磁盘k8s-master0......