pod(一):Kubernetes(k8s)创建pod的两种方式

服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64

docker可以创建容器,Kubernetes不能直接创建容器,Kubernetes创建的是pod,pod里面包含了一个或者多个容器。

Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。

Pod(就像在鲸鱼荚或者豌豆荚中)是一组(一个或多个) 容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。 Pod 所建模的是特定于应用的 “逻辑主机”,其中包含一个或多个应用容器, 这些容器相对紧密地耦合在一起。 在非云环境中,在相同的物理机或虚拟机上运行的应用类似于在同一逻辑主机上运行的云应用。

除了应用容器,Pod 还可以包含在 Pod 启动期间运行的 Init 容器。 你也可以在集群中支持临时性容器 的情况下,为调试的目的注入临时性容器。

pod里面有一个或者多个容器,常见的容器有docker容器,containerd容器,除了 Docker 之外,Kubernetes 支持 很多其他容器运行时, Docker 是最有名的容器运行时, 使用 Docker 的术语来描述 Pod 会很有帮助。

Pod 的共享上下文包括一组 Linux 命名空间、控制组(cgroup)和可能一些其他的隔离方面, 即用来隔离 Docker 容器的技术。 在 Pod 的上下文中,每个独立的应用可能会进一步实施隔离。

就 Docker 概念的术语而言,Pod 类似于共享命名空间和文件系统卷的一组 Docker 容器。

4.1 环境介绍

Kubernetes集群架构:k8scloude1作为master节点,k8scloude2,k8scloude3作为worker节点

服务器 操作系统版本 CPU架构 进程 功能描述 k8scloude1/192.168.110.130 CentOS Linux release 7.4.1708 (Core) x86_64 docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calico k8s master节点 k8scloude2/192.168.110.129 CentOS Linux release 7.4.1708 (Core) x86_64 docker,kubelet,kube-proxy,calico k8s worker节点 k8scloude3/192.168.110.128 CentOS Linux release 7.4.1708 (Core) x86_64 docker,kubelet,kube-proxy,calico k8s worker节点

Kubernetes创建pod一般有两种方式:

4.2 使用命令行的方式创建pod

查看kubectl run创建pod的帮助

[root@k8scloude1 ~]# kubectl run --help
Create and run a particular image in a pod.

Examples:
  # Start a nginx pod.

  kubectl run nginx --image=nginx

  # Start a hazelcast pod and let the container expose port 5701.

  kubectl run hazelcast --image=hazelcast/hazelcast --port=5701
 ......

Usage:
  kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client] [--overrides=inline-json]
[--command] -- [COMMAND] [args...] [options]

Use "kubectl options" for a list of global command-line options (applies to all commands).

首先拉取我们需要的镜像,先在worker节点拉取nginx镜像

[root@k8scloude2 ~]# docker pull nginx

[root@k8scloude3 ~]# docker pull nginx

使用nginx镜像创建一个pod

#nginx为pod名字     --image=nginx表示使用Nginx镜像
[root@k8scloude1 pod]# kubectl run nginx --image=nginx
pod/nginx created

查看pod,STATUS为Running就表示pod创建成功

[root@k8scloude1 pod]# kubectl get pod
NAME    READY   STATUS              RESTARTS   AGE
nginx   0/1     ContainerCreating   0          6s

[root@k8scloude1 pod]# kubectl get pod
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          54s

删除pod

[root@k8scloude1 pod]# kubectl delete pod nginx
pod "nginx" deleted

使用nginx镜像创建一个pod,镜像的下载策略为IfNotPresent本地没有才下载镜像

镜像的下载策略:Always:每次都下载最新的镜像;Never:只使用本地镜像,从不下载,IfNotPresent:本地没有才下载镜像 默认值为:Always

#nginx为pod名字     --image=nginx表示使用Nginx镜像  --image-pull-policy=IfNotPresent表示镜像下载策略为IfNotPresent本地没有才下载镜像
[root@k8scloude1 pod]# kubectl run nginx --image=nginx --image-pull-policy=IfNotPresent
pod/nginx created

[root@k8scloude1 pod]# kubectl get pod
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          5s

#删除pod
[root@k8scloude1 pod]# kubectl delete pod nginx
pod "nginx" deleted

注意:kubectl delete pod nginx会有点慢,加了–force 强制删除pod,删除pod会快很多

[root@k8scloude1 pod]# kubectl delete pod nginx --force
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.

pod "nginx" force deleted

查看pod标签的帮助

[root@k8scloude1 ~]# kubectl run --help | grep labels
  # Start a hazelcast pod and set labels "app=hazelcast" and "env=prod" in the container.

  kubectl run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"
  -l, --labels='': Comma separated labels to apply to the pod(s). Will override previous values.

创建pod,指定环境变量和标签

#nginx为pod名字     --image=nginx表示使用Nginx镜像  --image-pull-policy=IfNotPresent表示镜像下载策略为IfNotPresent本地没有才下载镜像   --env:设置变量xx=1,yy=2     --labels设置标签,给pod打上"xx=1,yy=2"的标签
[root@k8scloude1 pod]# kubectl run nginx --image=nginx --image-pull-policy=IfNotPresent --env "xx=1" --env "yy=2" --labels="xx=1,yy=2"
pod/nginx created

#查看pod
[root@k8scloude1 pod]# kubectl get pod -o wide
NAME    READY   STATUS    RESTARTS   AGE   IP               NODE         NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          20s   10.244.112.136   k8scloude2

进入到pod里,可以看到变量xx,yy

[root@k8scloude1 pod]# kubectl exec -it nginx -- bash
root@nginx:/# echo $xx
1
root@nginx:/# echo $yy
2
root@nginx:/# exit
exit

查看pod的标签,–show-labels参数显示标签

[root@k8scloude1 pod]# kubectl get pod -o wide --show-labels
NAME    READY   STATUS    RESTARTS   AGE     IP               NODE         NOMINATED NODE   READINESS GATES   LABELS
nginx   1/1     Running   0          4m59s   10.244.112.136   k8scloude2                          xx=1,yy=2

4.3 使用yaml文件的方式创建pod

YAML是”YAML Ain’t a Markup Language”(YAML不是一种标记语言)的递归缩写。YAML的意思其实是:”Yet Another Markup Language”(仍是一种标记语言)。主要强调这种语言是以数据为中心,而不是以标记语言为重心,例如像xml语言就会使用大量的标记。

YAML是一个可读性高,易于理解,用来表达数据序列化的格式。它的语法和其他高级语言类似,并且可以简单表达清单(数组)、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件等。YAML的配置文件后缀为 .yaml。

  • yaml文件基本语法:
    YAML使用可打印的Unicode字符,可使用UTF-8或UTF-16。
  • 数据结构采用键值对的形式,即 键名称: 值,注意冒号后面要有空格。
  • 每个清单(数组)成员以单行表示,并用短杠+空白(- )起始。或使用方括号([]),并用逗号+空白(, )分开成员。
  • 每个散列表的成员用冒号+空白(: )分开键值和内容。或使用大括号({ }),并用逗号+空白(, )分开。
  • 字符串值一般不使用引号,必要时可使用,使用双引号表示字符串时,会转义字符串中的特殊字符(例如\n)。使用单引号时不会转义字符串中的特殊字符。
  • 大小写敏感
  • 使用缩进表示层级关系,缩进不允许使用tab,只允许空格,因为有可能在不同系统下tab长度不一样
  • 缩进的空格数可以任意,只要相同层级的元素左对齐即可
  • 在单一文件中,可用连续三个连字号(—)区分多个文件。还有选择性的连续三个点号(…)用来表示文件结尾。
  • ‘#’表示注释,可以出现在一行中的任何位置,单行注释
  • 在使用逗号及冒号时,后面都必须接一个空白字符,所以可以在字符串或数值中自由加入分隔符号(例如:5,280或http://www.wikipedia.org)而不需要使用引号。

接下里使用yaml文件的方式创建pod

–dry-run 模拟运行,并不会真的创建一个pod , –dry-run=client输出信息少 ,–dry-run=server输出信息多, -o yaml以yaml文件的格式输出

–dry-run=server输出信息如下:内容很多

#nginx为pod名字     --image=nginx表示使用Nginx镜像  --image-pull-policy=IfNotPresent表示镜像下载策略为IfNotPresent本地没有才下载镜像
[root@k8scloude1 pod]# kubectl run nginx --image=nginx --image-pull-policy=IfNotPresent --dry-run=server -o yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2022-01-12T07:51:11Z"
  labels:
    run: nginx
  name: nginx
  namespace: pod
  uid: afa40310-3efd-4d9f-8337-8e1db955c6f7
spec:
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: nginx
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-w56gz
      readOnly: true
  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  preemptionPolicy: PreemptLowerPriority
  priority: 0
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 30
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - name: kube-api-access-w56gz
    projected:
      defaultMode: 420
      sources:
      - serviceAccountToken:
          expirationSeconds: 3607
          path: token
      - configMap:
          items:
          - key: ca.crt
            path: ca.crt
          name: kube-root-ca.crt
      - downwardAPI:
          items:
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
            path: namespace
status:
  phase: Pending
  qosClass: BestEffort

–dry-run=client输出信息如下:输出内容恰到好处

[root@k8scloude1 pod]# kubectl run nginx --image=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: nginx
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

生成创建pod的yaml文件

[root@k8scloude1 pod]# kubectl run nginx --image=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml >nginx.yaml

yaml文件里有很多变量,可以使用kubectl explain查看yaml文件每个字段的含义

kubectl explain pods查看一级字段有哪些,每个的含义
[root@k8scloude1 ~]# kubectl explain pods
KIND:     Pod
VERSION:  v1

DESCRIPTION:
     Pod is a collection of containers that can run on a host. This resource is
     created by clients and scheduled onto hosts.

FIELDS:
   apiVersion
     APIVersion defines the versioned schema of this representation of an
     object. Servers should convert recognized schemas to the latest internal
     value, and may reject unrecognized values. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

   kind
     Kind is a string value representing the REST resource this object
     represents. Servers may infer this from the endpoint the client submits
     requests to. Cannot be updated. In CamelCase. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

   metadata
     Standard object's metadata. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

   spec
     Specification of the desired behavior of the pod. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

   status
     Most recently observed status of the pod. This data may not be up to date.

     Populated by the system. Read-only. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

查看一级字段下包含了哪些字段,对某个字段不了解,先使用kubectl explain查看

[root@k8scloude1 ~]# kubectl explain pod.spec

[root@k8scloude1 ~]# kubectl explain pods.spec.containers

[root@k8scloude1 ~]# kubectl explain pods.spec.containers.ports

容器containers里也可以自定义变量,定义变量的时候:变量的值如果是数字,需要加””

[root@k8scloude1 pod]# vim nginx.yaml

#kind: Pod表示资源类型为Pod   labels指定pod标签   metadata下面的name指定pod名字   containers下面全是容器的定义
#image指定镜像名字  imagePullPolicy指定镜像下载策略   containers下面的name指定容器名
#resources指定容器资源(CPU,内存等)   env指定容器里的环境变量   dnsPolicy指定DNS策略
#restartPolicy容器重启策略
[root@k8scloude1 pod]# cat nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: nginx
    resources: {}
    env:
    - name: xx
      value: "12"
    - name: yy
      value: "21"
    - name: zz
      value: hello
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

kubectl apply -f 应用配置文件,创建pod

[root@k8scloude1 pod]# kubectl apply -f nginx.yaml
pod/nginx created

[root@k8scloude1 pod]# kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          26s

删除pod

[root@k8scloude1 pod]# kubectl delete -f nginx.yaml
pod "nginx" deleted

[root@k8scloude1 pod]# kubectl get pods
No resources found in pod namespace.

定义一个pod指明容器的端口,containerPort: 80 只是告知外界nginx这个pod使用80端口,真正要修改端口需要修改镜像

[root@k8scloude1 pod]# vim nginx.yaml

#kind: Pod表示资源类型为Pod   labels指定pod标签   metadata下面的name指定pod名字   containers下面全是容器的定义
#image指定镜像名字  imagePullPolicy指定镜像下载策略   containers下面的name指定容器名
#resources指定容器资源(CPU,内存等)   env指定容器里的环境变量   dnsPolicy指定DNS策略
#restartPolicy容器重启策略    ports指定容器端口
[root@k8scloude1 pod]# cat nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: nginx
    resources: {}
    ports:
    - name: http
      containerPort: 80
      protocol: TCP
    env:
    - name: xx
      value: "12"
    - name: yy
      value: "21"
    - name: zz
      value: hello
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

创建pod

[root@k8scloude1 pod]# kubectl apply -f nginx.yaml
pod/nginx created

[root@k8scloude1 pod]# kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          3s

强制删除pod

[root@k8scloude1 pod]# kubectl delete pod nginx --force
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.

pod "nginx" force deleted

先生成一个yaml文件

[root@k8scloude1 pod]# kubectl run nginx --image=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: nginx
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

我们注意到,有的字段前面有- ,有的没有- ,没有-的是字典,字典里不能有重复变量,有-的是列表,列表里的每个对象都是一个匿名字典,在列表中,对象的第一个字段要加-

例如: 当pod里有多个容器的时候,containers可以定义多个,每个容器是一个对象,每个容器的第一个变量就加-

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: nginx
    resources: {}
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: nginx
    resources: {}
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: nginx
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always

status: {}

不同的Kubernetes资源类型,apiVersion是不一样的,Pod的apiVersion为v1

kubectl api-versions 查看所有的apiVersion

[root@k8scloude1 ~]# kubectl api-versions
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1
coordination.k8s.io/v1beta1
crd.projectcalico.org/v1
discovery.k8s.io/v1
discovery.k8s.io/v1beta1
events.k8s.io/v1
events.k8s.io/v1beta1
extensions/v1beta1
flowcontrol.apiserver.k8s.io/v1beta1
metrics.k8s.io/v1beta1
networking.k8s.io/v1
networking.k8s.io/v1beta1
node.k8s.io/v1
node.k8s.io/v1beta1
policy/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

生成yaml文件

[root@k8scloude1 pod]# kubectl run pod1 --image=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml >pod1.yaml

使用同一个yaml文件创建2个pod

[root@k8scloude1 pod]# sed 's/pod1/pod2/' pod1.yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: pod2
  name: pod2
spec:
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: pod2
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

[root@k8scloude1 pod]# sed 's/pod1/pod2/' pod1.yaml | kubectl apply -f -
pod/pod2 created

[root@k8scloude1 pod]# sed 's/pod1/pod3/' pod1.yaml | kubectl apply -f -
pod/pod3 created

[root@k8scloude1 pod]# kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
pod2    1/1     Running   0          30s
pod3    1/1     Running   0          9s

[root@k8scloude1 pod]# ls
pod1.yaml

Original: https://www.cnblogs.com/renshengdezheli/p/16700867.html
Author: 人生的哲理
Title: pod(一):Kubernetes(k8s)创建pod的两种方式

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582023/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 磁盘空间满,如何处理?

    作为运维人员,磁盘空间报警是最寻常遇到的情况,那么遇到空间如何处理呢?这里介绍一下处理办法及处理思路。 操作系统:centos系统 、Ubuntu 1 定位目录 收到空间报警信息,…

    Linux 2023年6月6日
    0102
  • 文本操作find cut sort wc sed awk

    文本操作 查找文件: # find 大概位置 以名字查找 名字 find /etc/ -name i18n find /etc/ -name 70* find /etc/ -nam…

    Linux 2023年6月11日
    092
  • Linux文件属性及权限

    Linux文件属性及权限 首先我们以root用户的身份登录linux,执行ls -al 查看文件: 文件类型: 【d】 代表目录(directory)、【-】代表文件、【l】代表链…

    Linux 2023年6月11日
    087
  • Linux上传下载神器之 lrzsz

    在开发的过程中,经常遇到 需要在 Linux 和 Windows 之间上传下载文件的情况 这时,一般都是使用 FTP 或者 WinSCP 工具进行上传下载, 虽然也能解决问题,但是…

    Linux 2023年6月13日
    084
  • 关于docker中容器可以Ping通外网,真机无法Ping通容器的问题

    首先我们要知道整体的框架结构,docker是我们安装在centos7上的,而centos7是安装在vmware上。其中docker中还有若干容器运行。 整体框架图如下: 我们将它分…

    Linux 2023年5月27日
    0161
  • CentOS 6.x安装php 5.6和redis扩展的全过程

    安装PHP 5.6 注1:如果想更换到php5.5或5.4版本, 直接把上面的56w换成55w或者54w就可以了; 注2:php-opcache和php-xcache会有效的提高p…

    Linux 2023年5月28日
    089
  • angular typescript 引入js文件

    第一步,将js文件放在应该放的位置,我是自己随便建了个js测试一下。 第二步,在angular.json里引入js。 第三步,在要使用的地方声明,然后就可以使用。 注意点:angu…

    Linux 2023年6月7日
    080
  • 对象缓存服务的思考和实现

    写在前面 目前在很多业务中,存储都大量的依赖了云存储,比如阿里云的 oss、华为云的 obs 等。但是如果有大量的上传/下载任务,云存储上的网络 I/0 就变成了一个很大的瓶颈。 …

    Linux 2023年6月14日
    090
  • 重载规则

    1、可重载的运算符 + – * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |= << >&gt…

    Linux 2023年6月13日
    091
  • Linux 下重启 PHP 服务、nginx 服务

    一、重启 PHP 服务 service php-fpm start 开启 service php-fpm stop 停止 service php-fpm restart 重启 二、…

    Linux 2023年6月13日
    078
  • @Aspect

    AOP是指在程序运行期间动态地将某段代码切入到指定位置并运行的编程方式。 AOP详解可参考:https://blog.csdn.net/javazejian/article/det…

    Linux 2023年6月8日
    099
  • redis安装使用

    Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务…

    Linux 2023年5月28日
    091
  • bash 教程-1 shell 基础 快捷键 目录堆栈 操作历史 [MD]

    我的GitHub 我的博客 我的微信 我的邮箱 bqt20094 baiqiantao@sina.com Bash 简介 Bash 是 Unix 系统和 Linux 系统的一种 S…

    Linux 2023年5月28日
    088
  • 散列数据结构以及在HashMap中的应用

    1. 为什么需要散列表? 对于线性表和链表而言,访问表中的元素,时间复杂度均为O(n)。即便是通过树结构存储数据,时间复杂度也为O(logn)。那么有没有一种方式可以将这个时间复杂…

    Linux 2023年6月7日
    0128
  • 高通MSM8998 ABL的调试

    高通在MSM8998上引入了UEFI,用来代替LK(Little Kernel)。高通UEFI由XBL和ABL两部分组成。XBL负责芯片驱动及充电等核心应用功能。ABL包括芯片无关…

    Linux 2023年6月7日
    078
  • 《Redis开发与运维》——(九)哨兵(脑图)

    posted @2021-01-09 15:09 雪山上的蒲公英 阅读(181 ) 评论() 编辑 / 返回顶部代码 / Original: https://www.cnblogs…

    Linux 2023年5月28日
    0102
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球