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