当前位置: 首页 > news >正文

手机做网站过程wordpress 文章摘要 插件

手机做网站过程,wordpress 文章摘要 插件,seo搜索引擎优化工作内容,建网站要买服务器吗Kubernetes#xff08;简称K8S#xff09;是一个开源的容器编排平台#xff0c;用于自动化容器化应用的部署、扩展和管理。在Kubernetes中#xff0c;Pod是最小的部署单元。理解Pod的概念对于掌握Kubernetes至关重要。本篇文章将详细解释什么是Kubernetes Pod#xff0c;并… Kubernetes简称K8S是一个开源的容器编排平台用于自动化容器化应用的部署、扩展和管理。在Kubernetes中Pod是最小的部署单元。理解Pod的概念对于掌握Kubernetes至关重要。本篇文章将详细解释什么是Kubernetes Pod并通过实际例子帮助读者更好地理解这一概念。 什么是 Kubernetes Pod 在了解 Kubernetes Pod 概念之前先来了解容器 容器众所周知是一个自包含的环境用于打包应用程序及其依赖项。通常一个容器运行单个进程尽管也有方法可以运行多个进程。每个容器都有一个IP地址并且可以附加存储卷以及控制CPU和内存资源等。这些都是通过命名空间和控制组namespaces and control groups的概念实现的。 Kubernetes 是一个用于部署、扩展和管理容器化应用程序的容器编排系统它有自己运行容器的方式我们称之为 Pod。Pod 是 Kubernetes 中最小的可部署单元代表一个应用程序的单个实例。 例如如果你想运行 Nginx 应用程序你可以将它运行在一个 Pod 中。 那么Pod 与容器有何不同呢 容器是一个单独的单位。然而Pod 可以包含多个容器。你可以将 Pod 想象成一个可以同时容纳一个或多个容器的盒子。 Pod 提供了更高层次的抽象允许你将多个容器作为一个单元进行管理。在这里每个容器不再单独获得 IP 地址而是 Pod 获得一个唯一的 IP 地址并且运行在 Pod 内的容器通过 localhost 在不同端口上相互连接。 这意味着 Kubernetes Pod 内的容器共享以下内容 网络命名空间Pod 内的所有容器通过 localhost 进行通信。IPC 命名空间所有容器使用共享的进程间通信命名空间。UTS 命名空间所有容器共享相同的主机名。 Pod 内的容器不共享什么 默认情况下PID 命名空间不共享但 Kubernetes 提供选项通过 shareProcessNamespace 选项在 Pod 内启用进程共享。挂载命名空间不在容器之间共享。每个容器都有自己的私有文件系统和目录。然而Pod 挂载的存储卷在容器之间共享。 总的来说你需要了解以下关于 Pod 的信息 Pod 是 Kubernetes 中最小的可部署单元。Pod 具有短暂性它们可以被创建、删除和更新。一个 Pod 可以有多个容器没有限制一个 Pod 中可以运行多少个容器。每个 Pod 都有一个唯一的 IP 地址。Pod 之间通过 IP 地址进行通信。Pod 内的容器使用 localhost 通过不同的端口进行连接。在 Pod 内运行的容器应该有不同的端口号以避免端口冲突。你可以为 Pod 内运行的每个容器设置 CPU 和内存资源。Pod 内的容器共享相同的存储卷挂载。Pod 内的所有容器都调度到同一个节点上它不能跨多个节点。如果有多个容器在 Pod 启动期间所有主要容器并行启动。而 Pod 内的 init 容器按顺序运行。 Pod YAML 现在我们已经对 Pod 有了基本的了解接下来看看如何定义 Pod。Pod 是原生的 Kubernetes 对象如果你想创建一个 Pod需要以 YAML 格式声明 Pod 的需求。你也可以使用 kubectl 命令创建 Pod这将在后面的主题中介绍。 以下是一个创建 Nginx Web 服务器 Pod 的 Pod YAML 示例。这个 YAML 文件只是一个 Pod 的声明性期望状态。 apiVersion: v1 kind: Pod metadata:name: web-server-podlabels:app: web-serverenvironment: productionannotations:description: This pod runs the web server spec:containers:- name: web-serverimage: nginx:latestports:- containerPort: 80让我们来了解这个 Pod YAML。一旦你理解了基本的 YAML 格式就会更容易操作 Pod 和相关对象如 Deployment、DaemonSet、StatefulSet 等。 每个 Kubernetes 对象都有一些通用的参数。这些参数的值会根据我们创建的对象类型而变化。让我们看看 Kubernetes Pod 对象。 参数描述apiVersionpod的API版本。在我们的例子中是v1kind对象类型这里是Podmetadata元数据用于唯一地标识和描述pod- 标签(表示pod的键值对的集合)。这类似于云环境中的标记。每件物品都必须贴上标准标签。它有助于对对象进行分组。- name (pod的名称) - namespace (pod的命名空间)-注释(key-value格式的附加数据)spec在spec 部分我们声明pod的所需状态。这些是我们想要在pod中运行的容器的规范。containers在containers下我们声明pod中容器的所需状态。容器映像、暴露的端口等。 我们现在已经看到了一个基本的Pod YAML清单。需要注意的是这个清单文件支持许多参数。我们将逐步探索这些额外的参数与实践的方法。 现在我们对Pod有了一些基本的了解让我们创建一个Pod。 创建Pod 你可以用两种方法创建pod 使用kubectl命令式命令主要用于学习和测试目的。命令式命令有其自身的局限性。声明式方法使用YAML方式。在开发项目时YAML清单文件用于部署pods。 让我们看看这两个方式。我们将使用以下内容创建一个NGINX pod pod的名称是web-server-pod它应该有标签:app: web-server和environment: production添加一个注释来描述pod。使用nginx:1.14.2容器镜像。暴露集装箱端口80。 方法1:使用Kubectl命令创建Pod 对于讨论的pod需求这里是kubectl命令。 kubectl run web-server-pod \--imagenginx:1.14.2 \--restartNever \--port80 \--labelsappweb-server,environmentproduction \--annotations descriptionThis pod runs the web server在这里pod被部署在默认命名空间中。你可以获得部署的pod kubectl的状态。 kubectl get pods部署pod后您将看到pod的运行状态如下所示。在我们的例子中pod中只有一个容器。所以它显示1/1就绪并运行。 如果你想知道运行pod的所有细节可以使用kubectl describe pod。 kubectl describe pod web-server-pod在下面的输出中你可以看到pod的所有细节。它的IP地址、命名空间、容器细节、QoS类等。 这里是描述命令显示的所有重要pod信息的图形视图。 现在让我们使用以下命令删除pod。 kubectl delete pod web-server-pod方法2:使用声明式YAML创建Pod 在实际项目中你将不得不通过声明的方法来创建pods。 让我们看看如何使用YAML清单文件创建pod。 创建名为nginx的文件。内容如下。 apiVersion: v1 kind: Pod metadata:name: web-server-podlabels:app: web-serverenvironment: productionannotations:description: This pod runs the web server spec:containers:- name: web-serverimage: nginx:1.14.2ports:- containerPort: 80现在要部署清单文件您需要使用文件名执行以下kubectl命令。 kubectl create -f nginx.yaml我们应该记住创建YAML时的每个参数吗?不用。你可以使用--dry-run标志创建YAML文件。 kubectl run nginx-pod --imagenginx:1.14.2 --dry-runclient -o yaml访问在 Pod 中运行的应用程序 现在我们有了一个运行中的pod和Nginx web服务器。整个想法是部署和访问在pod中运行的应用程序。 Kubectl提供了一个port-forward命令来从本地工作站访问Kubernetes集群中运行的pods。 我们有一个名为web-server-pod的运行pod。让我们通过port-forward命令访问它。 现在如果您打开浏览器并访问http://localhost:8080您应该会看到如下所示的Nginx主页。网页由我们的Nginx web服务器pod提供服务。 现在你可以按CTRLC断开端口转发。 以下是运行kubectl port-forward时发生的情况 Kubectl绑定本地系统中的指定端口。在我们的例子中是8080。然后它与Kubernetes集群API通信以建立到所需节点的隧道(单个HTTP连接)然后到指定的pod和容器端口(80)。 注意:kubectl端口转发更多的是一个调试实用程序。你需要使用Kubernetes服务对象来公开在pod中运行的应用程序。我们将在另一个博客中实际地研究Kubernetes service 的概念。 访问 Pod Shell 我们已经学习了如何访问在pod中运行的应用程序。 现在如果你想进入Pod shell怎么办? 有许多用例需要终端访问pod。一个主要用例是调试和故障排除。 这就是kubectl exec命令派上用场的地方。 您可以使用以下命令访问web-server-pod的shell。 kubectl exec -it web-server-pod -- /bin/sh在下面的输出中我正在pod内执行whoami命令。 Pod 的生命周期 关于pod你应该知道的另一个重要概念是它的生命周期。 pod通常由ReplicaSet controller、Deployment controller等控制器管理。当您使用YAML创建单个pod时它不受任何控制器的管理。在这两种情况下pod都会经历不同的生命周期阶段。 Pod的生命周期包括以下几个阶段 PendingPod已被Kubernetes API Server接受但还没有被调度到Node上。RunningPod已被调度到Node上所有容器都已启动。SucceededPod中的所有容器都正常终止且不会再被重启。FailedPod中的某个容器意外终止且不会再被重启。Unknown由于某种原因无法获取Pod的状态。 如果你通过kubectl describe pod命令查看Pod的详细信息你可以看到Pod的状态。这里有一个例子。 Pod 功能 我们已经部署了一个简单的Nginx pod配置非常少。但是pod具有许多用于资源管理、配置、机密、可用性、安全性等方面的特性。 如果你是初学者一次性学习所有这些概念将是多余的。在使用与pod相关的对象(如具有实际用例的Deployment)时学习所有这些概念更有意义。 此外您需要通过实际用例详细了解每个特性。 以下是与pod相关的主要特性。 Resource Requests and Limits: Pod CPU/内存分配Labels: 附加在pod上的键值对用于对资源进行分类。Selectors: 根据标签对资源进行分组。Liveness, Readiness和Startup Probes: 容器运行状况检查ConfigMaps: 用于配置管理Secrets: 用于秘密管理Volumes: 持久数据存储Init Containers: 在主容器之前运行的容器。Ephemeral Containers: 添加到pod中的临时容器用于调试或故障排除。Service Account: :用于限制对Kubernetes对象和资源的访问。SecurityContext 主机权限和特权。Affinity and Anti-Affinity Rules: 跨节点的Pod放置控制。Pod Preemption Priority: 设置Pod调度和驱逐的优先级。Pod Disruption Budget: 在自愿中断期间需要运行的Pod副本的最小数量。Container Life Cycle Hooks:根据pod的生命周期阶段变化执行自定义脚本。 全面的 Pod YAML 配置 如果您添加我上面列出的pod特性您将得到一个全面的pod YAML配置如下所示。此外这些选项将与Deployment、Statefulset等对象一起使用。 apiVersion: v1 kind: Pod metadata:name: web-server-pod spec:initContainers:- name: init-myserviceimage: busybox:1.28command: [sh, -c, echo Init container started!]containers:- name: web-serverimage: nginx:latestports:- containerPort: 80volumeMounts:- name: shared-datamountPath: /usr/share/nginx/html- name: secret-volumemountPath: /etc/my-secret- name: configmap-volumemountPath: /etc/configsecurityContext:capabilities:add: [NET_ADMIN, SYS_TIME]resources:requests:memory: 64Micpu: 250mlimits:memory: 128Micpu: 500mreadinessProbe:httpGet:path: /index.htmlport: 80initialDelaySeconds: 5periodSeconds: 5livenessProbe:httpGet:path: /index.htmlport: 80initialDelaySeconds: 15periodSeconds: 20startupProbe:httpGet:path: /index.htmlport: 80failureThreshold: 30periodSeconds: 10lifecycle:postStart:exec:command: [/bin/sh, -c, echo PostStart]preStop:exec:command: [/bin/sh, -c, echo PreStop]serviceAccountName: nginx-service-account securityContext: runAsUser: 1000runAsGroup: 3000fsGroup: 2000shareProcessNamespace: truevolumes:- name: shared-dataemptyDir: {}- name: secret-volumesecret:secretName: nginx-secret- name: configmap-volumeconfigMap:name: nginx-configmapPod 关联对象 当谈到在Kubernetes上运行应用程序时我们不会运行单个pod。因为Kubernetes是关于扩展和维护pod可用性的。 所以如果你运行一个单独的pod它将是一个单点故障。因为Pod本身不能直接缩放。 正如我们在Kubernetes架构中讨论的那样我们需要像Replicaset这样的控制器来确保始终运行所需数量的pod。 针对不同的用例Kubernetes有不同类型的对象与pod相关联。 以下是与pod相关的重要对象 Replicaset: 维护一组稳定的pod副本在任何给定时间运行。Deployment: 运行无状态应用程序如web服务器、api等StatefulSets: 运行有状态的应用程序如分布式数据库。Daemonsets: 在所有Kubernetes节点上运行代理。Jobs: 用于批处理CronJobs: 计划的作业 总结 Kubernetes Pod是容器编排的基本单元包含一个或多个共享网络和存储的容器。通过理解Pod的概念和生命周期我们可以更有效地在Kubernetes中部署和管理应用。本文通过一个简单的Nginx Pod示例展示了如何创建和访问Pod希望能帮助读者更好地理解Kubernetes Pod的基本原理。 如果你对云原生和Kubernetes感兴趣欢迎关注我们后续的【云原生|K8S系列】文章。
http://www.pierceye.com/news/304516/

相关文章:

  • 电商网站设计目的活动策划怎么写
  • 做网站有限公司智慧团建官方网站
  • 南京建设网站公司哪家好科技创新论文800字
  • 网站app的区别是什么深圳沙井做网站公司
  • 珠海网站建站js写wordpress
  • 公司做网站怎么做账网站建设都需要买什么东西
  • seo网站模板深圳建设局和住建局
  • 全国做网站的公司有哪些正规网站做菠菜广告
  • 成都有哪些做公司网站的公司动漫制作专业用什么笔记本电脑
  • 模型外包网站网站建设费用 多少钱
  • 课程资源网站开发 jsp免费做网站自助建站
  • 陕西网站备案代理网站代码隐蔽代码
  • 做网站应该注意免费网站开发合同
  • 网站运营推广怎做网站引导制作
  • 在川航网站购票后怎么做公司黄页网
  • html音乐网页完整代码长春做网站优化的公司
  • wordpress 网站标题为什么尽量不要备案域名
  • 营销型企业网站建设ppt百度一下你就知道123
  • 网络优化师自学网站建设银行网站的特点
  • 苏州网站建设规划网站域名年费
  • 建筑效果图素材网站网站设计证书
  • 一个网站备案多个域名吗合肥万户网站建设
  • 小型企业网站排名前十做网站的条件
  • 成都网站建设有名的公司网上商城制作哪家好
  • 做网站宣传多少钱黔东南网站设计公司
  • 网站开发人员职业分析wordpress数据库替换网址
  • ps切片工具做网站道滘镇网站仿做
  • 电子商务他们的代表网站html5视频网站模板
  • 广州网站建设乐云seo上海到北京高铁最快几小时
  • wordpress 音乐网站网站建设开发软件有哪些方面