首页 > 其他分享 >kubernetes_k8s框架概念梳理

kubernetes_k8s框架概念梳理

时间:2023-12-14 15:23:25浏览次数:27  
标签:容器 kubernetes 创建 梳理 kubelet Pod k8s pod

k8s

k8s分为控制面(Control Plane,master)和数据面(即Node)。
  控制面是K8S的大脑,组件包含:
        etcd数据库,负责注册服务、保存k8s配置和所有的API对象等数据
        scheduler 负责监视pod的调度情况
        controller-manager 负责节点、任务、端点和账户的总体调度
        apiserver 对外提供操作接口,可以通过kubectl调用。
  数据面Node是具体部署app的虚拟机或宿主机,
     最核心的组件就是kubelet,负责启动node并管理container,
  	此外还有kube-proxy做k8s service的网络代理

pod的创建

1.一种是直接创建 Pod。
  使用 kubectl 直接创建 Pod	
     不依赖 kube-controller-manager 组件,并且在创建 Pod 时指定了 nodeName
2.一种是利用 Pod 控制器创建 Pod;  

K8s概念梳理

 如图所示


##关于pod的生命周期

k8s 的pod

pod的本质是容器的增强器[
docker 的最小单元 container
k8s 最小的操作单元-pod,pod是一个或者多个Container的集合
   Static Pod 静态pod 是由 kubelet 管理的只在特定node上存在的pod;静态pod总是由kubelet创建的
       常见的静态pod通常是kubeadm部署的
	        kube-controller-manager 
			kube-scheduler 
			kube-apiserver 这些pod
       创建静态 Pod 有两种方式:配置文件和 HTTP 两种方式
	      由--pod-manifest-path= or --manifest-url=参数指定的目录下定义的所有 pod 都会自动创建
		  静态pod文件	
		  配置文件就是放在特定目录下的标准的 JSON 或 YAML 格式的 pod 定义文件。
		   用kubelet --pod-manifest-path=<the directory>来启动kubelet进程

pod生命周期-lifecycle

Pod的生命周期:
	01.Pod hook:钩子函数
             PostStart:这个钩子在容器创建后立即执行
			     Exec - 用于执行一段特定的命令,不过要注意的是该命令消耗的资源会被计入容器。
                 HTTP - 对容器上的特定的端点执行HTTP请求。
			 PreStop:这个钩子在容器终止之前立即被调用
	02.	probe 探针	 
	    liveness probe(存活探针)
		readiness probe(可读性探针)来影响容器的生存周期。
              initialDelaySeconds	 periodSeconds	  timeoutSeconds
              successThreshold	  failureThreshold			  
eg01.:
spec:
  containers:
  - name: hook-demo1
    image: nginx
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]

eg-02
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5
		  
容器的生命周期:

pod

自动扩/缩容	 配合HPA(HorizontalPodAutoscaler)组件完成
滚动更新:配合deployment组件实现部署和升级策略

kind

 ###kind delete cluster --name=data
   ###kind get clusters/nodes/kubeconfig
   kind 提供了将 docker 镜像加载到集群每个 node 节点上的操作命令,加载镜像之后,集群的每个节点都会具备该镜像文件
Docker 
 环境隔离 指进程、文件系统、网络等内容的隔离,多维度的隔离让容器内部更像一个独立的空间,其基于操作系统 namespace 实现
 资源隔离 指容器对硬件资源的使用限制,包括cpu、内存、磁盘及网络带宽,该限制基于os的cgroup实现。

k8s

###配置
kubectl config view	
 
Deployment用于管理Pod、ReplicaSet,可实现滚动升级和回滚应用、扩容和缩容:滚动更新(rolling update)和重新创建(recreate)
    ReplicaSet 是Replication Controller升级版确保Pod以指定的副本个数运行。
	deployment 认为所有的pod都是一样的 不用考虑顺序的要求
Service提供一个统一固定入口,负责将前端请求转发给Pod
   服务可以看做是一组提供相同服务的Pod的对外访问接口,服务作用于哪些Pod通过标签选择器来定义
   
   K8s通过一个ServiceName+ClusterIP统一屏蔽服务发现和负载均衡,
      底层技术是在 DNS+Service Registry基础上发展演进出来。
	  K8s的服务发现和负载均衡是在客户端通过Kube-Proxy + iptables转发实现,
	    它对应用无侵入,且不穿透Proxy,没有额外性能损耗。
K8s服务发现机制,可以认为是现代微服务发现机制和传统Linux内核机制的优雅结合

基础概念

 Label是Kubernetes系统中的一个核心概念。
   Label以key/value键值对的形式附加到各种对象上,如Pod、Service、RC、Node等。
   Label定义了这些对象的可识别属性,用来对它们进行管理和选择。Label可以在创建时附加到对象上,也可以在对象创建后通过API进行管理

参考

 https://github.com/karmada-io
 https://karmada.io/zh/docs/ 
https://blog.csdn.net/qq_45808700/article/details/132714651

标签:容器,kubernetes,创建,梳理,kubelet,Pod,k8s,pod
From: https://www.cnblogs.com/ytwang/p/17901244.html

相关文章

  • 玩转 K8s 权限控制:RBAC + kubeconfig 搞定 kubectl 权限管理那些事
    目录1.先抛需求2.RBAC配置2.1.K8s里的RBAC机制介绍2.2创建ServiceAccount、Role、RoleBinding和Secret3.配置kubeconfig文件3.1kubeconfig文件介绍3.2具体的kubeconfig配置3.3kubeconfig切换测试4.总结1.先抛需求当一个K8s集群需要被多个租户共享时,就......
  • k8s1.26部署etcd集群挂载nfs failed to save Raft hard state and entries","error":"
    背景:使用helm部署apisix时会把etcd也一起部署了,etcd数据需要持久化的,这边因为测试环境使用nfs,挂载nfs时发现只有一个etcd节点启动正常其他两个均报错如下:failedtosaveRafthardstateandentries","error":"input/outputerror截图:排错过程:1查看节点是否都可以挂载nfs  ---......
  • KubeKey 离线部署 KubeSphere v3.4.1 和 K8s v1.26 实战指南
    作者:运维有术前言知识点定级:入门级了解清单(manifest)和制品(artifact)的概念掌握manifest清单的编写方法根据manifest清单制作artifactKubeKey离线集群配置文件编写KubeKey离线部署HarborKubeKey离线部署KubeSphere和K8sKubeKey离线部署常见问题排......
  • k8s网络
    Kubernetes本身并不负责网络通信,Kubernetes提供了容器网络接口CNI(ContainerNetworkInterface),具体的网络通信交给CNI插件来负责,开源的CNI插件非常多,像Flannel、Calico。Kubernetes虽然不负责网络,但要求集群中的Pod能够互相通信,且Pod必须通过非NAT网络连接,即收到的数据包的源IP......
  • k8s安装Ingress-Nginx
    目前,DHorse(https://gitee.com/i512team/dhorse)只支持Ingress-nginx的Ingress实现,下面介绍Ingress-nginx的安装过程。下载安装文件首先,需要匹配Ingress-nginx版本和kubernetes版本。在https://github.com/kubernetes/ingress-nginx可以找到,如下图所示:笔者用的k8s版本是v1.21......
  • k8s数据持久化
    前面的学习,我们已经基本完成了在k8s中部署一个web服务,运行pod、创建service、创建ingress对外提供域名的七层代理。下一个环境就得去关注应用部署后的数据存储问题,容器化如何管理,k8s化如何管理。1.什么是Volume1.容器内部的存储数据,再容器生命周期中是很短暂的,伴随容器的销毁......
  • k8s配置文件管理
    1.为什么要用configMapConfigMap是一种用于存储应用所需配置信息的资源类型,用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。通过ConfigMap可以方便的做到配置解耦,使得不同环境有不同的配置。考虑真实的使用场景,像数据库这类中间件,是作为公共资源,为多个......
  • k8s资源清单
    k8s资源清单再安装好k8s之后,本章开始学习k8s的具体使用玩法。重点介绍如何使用Workload管理业务应用的生命周期,实现服务不中断的滚动更新,通过服务发现和集群内负载均衡来实现集群内部的服务间访问,并通过ingress实现外部使用域名访问集群内部的服务。学习过程中会逐步对Djang......
  • k8s介绍
    k8s容器编排系统k8S是谷歌几十年来研发的一套系统,更新了运维领域的玩法。内容很多,先快速练习玩法,知道是什么就行。具体【为什么】再花时间慢慢学吧!0.参考资料1.k8s能干什么https://kubernetes.io/zh-cn/docs/concepts/overview/#why-you-need-kubernetes-and-what-can-i......
  • 教你使用Prometheus-Operator进行K8s集群监控
    本文分享自华为云社区《Promethues-operator入门使用指导》,作者:可以交个朋友。一、背景在非operator配置的普罗中我们监控k8s集群都是通过配置configmap进行服务发现和指标拉取。切换到prometheus-operator难免会有些使用问题。不少用户已经习惯底层配置自动发现的方式。当过渡......