日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8s pod 查看 的yaml_Kubernetes入门到实战(五)深入浅出详解Pod

發布時間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8s pod 查看 的yaml_Kubernetes入门到实战(五)深入浅出详解Pod 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:Happy老師

鏈接:https://blog.51cto.com/happylab/2500457

寫在前面

前面的系列文章已介紹kubernetes架構,安裝,升級和快速入門,讀者通過文章的實操已對kubernetes已有初步的認識和理解,從本章開始逐步介紹kubernetes中的基礎概念概念和核心概念,基礎概念包括:namespace,labels,annotations,pods,volumes等;核心概念包含kubernetes中各種controller,包含以下幾種:

  • 應用副本控制器:ReplicaSets,Deployments,DaemonSets,StatefulSets;

  • 批處理任務控制器: Jobs和CronJob

  • 存儲控制器: PersistentVoloume,PersistentVolumeClaim,StorageClass;

  • 服務負載均衡: Service,Ingress,NetworkPolicy和DNS名稱解析;

  • 配置和密鑰: ConfigMaps和Secrets

    本文從最基礎的概念pod開始講解,后續逐步介紹應用部署,存儲,負載均衡等相關的控制器,kubernetes內部由多個不同的控制器組成,每個控制器完成不同的功能。

1. 深入學習pod

1.1 Container和Pod概念

容器是一種便攜式,輕量級別的容器虛擬化技術,使用linux cggroup技術實現各種資源的隔離,如cpu,memory,pid,mount,IPC等,相比于虛擬化技術如KVM,容器技術更加輕量級,它的產生主要解決環境的環境發布的問題,目前主流的容器技術是docker,說到容器,一般都等同于docker。

要運行容器首先需要有鏡像,應用和應用依賴的環境運行在容器中,在kubernetes中不會直接運行container,而是運行pod,一個pod里面包含多個container,container之間共享相同的namespace,network,storage等。鏡像存儲在私有鏡像或者公有鏡像中,運行時通過docker image pull的方式拉取到本地運行,images的拉取策略包含有兩種:

  • ImagePullPolicy為Always,不管本地是否有直接下載

  • ImagePullPolicy為IfNotPresent,默認鏡像拉取得策略,本地不存在再拉取

Pods是kubernetes中最小的調度單位,Pods內運行一個或者多個container,container之間共享pod的網絡ip資源,存儲volume資源,計算等資源,方便pod內部的container之間能夠實現快速的訪問和交互。

如上圖所示,Pod的使用方式通常包含兩種:

  • Pod中運行一個容器,最經常使用的模式,container封裝在pod中調度,兩者幾乎等同,但k8s不直接管理容器

  • Pod中運行多個容器,多個容器封裝在pod中一起調度,適用于容器之間有數據交互和調用的場景,如app+redis,pod內部共享相同的網絡命名空間,存儲命名空間,進程命名空間等。

1.2 如何創建pod

kubernetes交互的方式通常分為四種:

  • 命令行,kubectl和kubernetes交互,完成資源的管理,命令行入門簡單,但只能支持部分資源創建

  • API,通過resfulAPI以http的方式和kubernetes交互,適用于基于API做二次開發

  • SDK,提供各種語言原生的SDK,實現各種語言編程接入

  • YAML,通過易于理解的YAML文件格式,描述資源的定義,功能最豐富,最終轉換為json格式

kubernetes中通過定義生申明式的方式定義資源,即通過在yaml文件中定義所需的資源,kubernetes通過controller-manager按照yaml文件中定義的資源去生成所需的資源(match the current state to desired state)。通常在kubernetes中通過yaml文件的方式定義資源,然后通過kubectl create -f 文件.yaml的方式應用配置,如下演示創建一個nginx應用的操作。

1、編寫yaml文件,定義一個pod資源

[root@node-1 demo]# cat nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-demo
labels:
name: nginx-demo
spec:
containers:
- name: nginx-demo
image: nginx:1.7.9
imagePullPolicy: IfNotPresent
ports:
- name: nginx-port-80
protocol: TCP
containerPort: 80

關于配置文件,說明如下:

  • apiVersion api使用的版本,kubectl api-versions可查看到當前系統能支持的版本列表

  • kind 指定資源類型,表示為Pod的資源類型

  • metadata 指定Pod的元數據,metadata.name指定名稱,metadata.labels指定Pod的所屬的標簽

  • spec 指定Pod的模版屬性,spec.containers配置容器的信息,spec.containers.name指定名字,spec.containers.image指定容器鏡像的名稱,spec.containers.imagePullPolicy是鏡像的下載方式,IfNotPresent表示當鏡像不存在時下載,spec.containers.ports.name指定port的名稱,spec.containers.ports.protocol協議類型為TCP,spec.containers.ports.containerPort為容器端口。

2、創建pod應用

[root@node-1 demo]# kubectl apply -f nginx.yaml
pod/nginx-demo created

3、訪問應用

獲取容器的IP地址
[root@node-1 demo]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
demo-7b86696648-8bq7h 1/1 Running 0 8h 10.244.1.11 node-2 <none> <none>
demo-7b86696648-8qp46 1/1 Running 0 8h 10.244.1.10 node-2 <none> <none>
demo-7b86696648-d6hfw 1/1 Running 0 8h 10.244.1.12 node-2 <none> <none>
nginx-demo 1/1 Running 0 50s 10.244.2.11 node-3 <none> <none>

訪問站點內容:
[root@node-1 demo]# curl http://10.244.2.11
<html><head><title>Welcome to nginx!title><style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;
}style>head><body><h1>Welcome to nginx!h1><p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.p><p>For online documentation and support please refer to<a href="http://nginx.org/">nginx.orga>.<br/>
Commercial support is available at<a href="http://nginx.com/">nginx.coma>.p><p><em>Thank you for using nginx.em>p>body>html>

前面我們我們學習過kubernetes支持滾動升級RollingUpdate,彈性擴容replicas等特性,如何給Pod做滾動升級保障業務不中斷,如何提高Pod的副本個數保障高可用呢?答案是:不支持。Pod是單個,無法支持一些高級特性,高級特性需要通過高級的副本控制器如ReplicaSets,Deployments,StatefulSets,DaemonSets等才能支持。Pod在實際應用中很少用,除了測試和運行一些簡單的功能外,實際使用建議使用Deployments代替,Pod的定義以Template的方式嵌入在副本控制器中。

1.3. 如何編寫yaml文件

前面我們提到過kubernetse是申明式的方式部署應用,應用的部署都定義在yaml文件中來實現,如何來編寫應用的yaml文件呢,下面我來分享兩個實際使用的技巧:

1、通過定義模版快速生成,kubectl create apps -o yaml --dry-run的方式生成,--dry-run僅僅是試運行,并不實際在k8s集群中運行,通過指定-o yaml輸出yaml格式文件,生成后給基于模版修改即可,如下:

[root@node-1 demo]# kubectl create deployment demo --image=nginx:latest --dry-run -o yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: demo
name: demo
spec:
replicas: 1
selector:
matchLabels:
app: demo
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: demo
spec:
containers:
- image: nginx:latest
name: nginx
resources: {}
status: {}

2、explain命令,explain命令堪稱是語法查詢器,可以查到每個字段的含義,使用說明和使用方式,如想要查看Pod的spec中containers其他支持的字段,可以通過kubectl explain Pod.spec.containers的方式查詢,如下:

[root@node-1 demo]# kubectl explain Pods.spec.containers
KIND: Pod
VERSION: v1

RESOURCE: containers

DESCRIPTION:
List of containers belonging to the pod. Containers cannot currently be
added or removed. There must be at least one container in a Pod. Cannot be
updated.

A single application container that you want to run within a pod.

FIELDS:
args #命令參數
Arguments to the entrypoint. The docker image's CMD is used if this is not
provided. Variable references $(VAR_NAME) are expanded using the
container's environment. If a variable cannot be resolved, the reference in
the input string will be unchanged. The $(VAR_NAME) syntax can be escaped
with a double $$, ie: $$(VAR_NAME). Escaped references will never be
expanded, regardless of whether the variable exists or not. Cannot be
updated. More info:
https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

image #鏡像定義
Docker image name. More info:
https://kubernetes.io/docs/concepts/containers/images This field is
optional to allow higher level config management to default or override
container images in workload controllers like Deployments and StatefulSets.
ports #端口定義
List of ports to expose from the container. Exposing a port here gives the
system additional information about the network connections a container
uses, but is primarily informational. Not specifying a port here DOES NOT
prevent that port from being exposed. Any port which is listening on thedefault "0.0.0.0" address inside a container will be accessible from the
network. Cannot be updated.
readinessProbe #可用健康檢查
Periodic probe of container service readiness. Container will be removedfrom service endpoints if the probe fails. Cannot be updated. More info:
https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
resources #資源設置
Compute Resources required by this container. Cannot be updated. More info:
https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
...省略部分輸出...
volumeMounts #掛載存儲
Pod volumes to mount into the container's filesystem. Cannot be updated.
workingDir
Container's working directory. If not specified, the container runtime's
default will be used, which might be configured in the container image.
Cannot be updated.

關于explain內容解釋說明

  • 表示后面接一個字符串

  • 表示后面是一個列表的對象,列表需要以-開始,且可以寫多個

  • 表示一個對象,對象內部包含多個屬性

如繼續上面的內容,如果需要查看resource資源定義,可以通過explain pods.spec.containers.resource來查看具體的使用方法。

通過上面兩個工具的介紹,平時在日常工作中找到編寫yaml文件部署應用的地圖,建議手工多寫幾次,注意語法鎖進,多寫幾次就熟悉了。Pod中設計到有很多的特性,如資源分配,健康檢查,存儲掛載等(參考附錄文章),后續我們做詳細介紹,Pod將以Template的方式嵌入到副本控制器如Deployments中。

附錄

容器鏡像介紹:https://kubernetes.io/docs/concepts/containers/images/

Pod介紹:https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/

Resource限定內存資源:https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/

Resource限定CPU資源:https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource/

Pod掛載存儲:https://kubernetes.io/docs/tasks/configure-pod-container/configure-volume-storage/

Pod配置健康檢查:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/

往期文章

Kubernetes部署

Kubernetes 1.18.2集群部署 (單Master)+docker—kubeadm方式

Kubernetes 1.18.2集群部署 (多Master)+docker—kubeadm方式

Kubernetes 1.18.2集群部署 (多Master)+docker—二進制方式

Kubernetes 1.18.2集群部署 (單Master)+docker—shell腳本方式

Kubernetes 1.19.0集群部署 (多Master)+docker—kubeadm方式

Kubernetes 1.19.0集群部署 (多Master)+docker—二進制方式

Kubernetes 一條命令快速部署 Kubernetes 高可用集群—sealos

Kubernetes 一條命令快速部署 Kubernetes 高可用集群—kubei

Kubernetes Harbor v2.0.0私有鏡像倉庫部署

Kubernetes Harbor v2.0.2高可用私有鏡像倉庫部署

Kubernetes kubectx/kubens切換context和namespace

Kubernetes?kubeadm更新一個10年有效期的證書

Kubernetes kubeadm初始化kubernetes集群延長證書過期時間

Kubernetes kubeadm升級集群

Kubernetes kubeadm基礎使用

Kubernetes基礎篇

Kubernetes 是什么?

Kubernetes 基礎概念

Kubernetes 從零開始了解

Kubernetes 快速了解Kubernetes

Kubernetes kubectl命令

Kubernetes kubectl常用命令

Kubernetes kubectl常用命令大全

Kubernetes 創建、更新應用

Kubernetes 資源清單

Kubernetes Pod狀態和生命周期管理

Kubernetes Pod?Controller

Kubernetes ReplicaSet Controller

Kubernetes Deployment Controller

Kubernetes DamonSet Controller

Kubernetes Job、CronJob?Controller

Kubernetes HPA Controller

Kubernetes HPA Controller 使用詳解

Kubernetes KEDA基于Kubernetes事件驅動的自動縮放

Kubernetes 服務發現—Service

Kubernetes 內部服務發現—Coredns

Kubernetes 外部服務發現—Traefik ingress

Kubernetes 外部服務發現—Nginx Ingress Controller

Kubernetes 存儲卷—Volumes

Kubernetes?存儲卷—部署NFS服務器,供給靜態pv和動態pv

Kubernetes 存儲卷—PV和PVC的狀態變化

Kubernetes 特殊存儲卷—Secret和ConfigMap

Kubernetes StatefulSet Controller

Kubernetes 認證、授權和準入控制

Kubernetes dashboard認證訪問-更新

Kubernetes 網絡模型和網絡策略

Kubernetes 網絡原理解析

Kubernetes 網絡插件-flannel

Kubernetes 網絡插件-calico

Kubernetes Pod資源調度

Kubernetes 資源指標和集群監控

Kubernetes 容器云平臺技術落地方案

Kubernetes v1.19.0 正式發布

Kubernetes Ratel自動生成yaml文件

Kubernetes 部署策略詳解

Kubernetes 集群規模應該有多大?

Kubernetes 集群備份/恢復velero實戰

Kubernetes 集群備份/恢復etcd數據實戰

Kubernetes基礎篇—Kubernetes?原理剖析與實戰應用

Kubernetes 如何深入掌握 Kubernetes

Kubernetes 如何火起來的

Kubernetes 架構為什么是這樣的

Kubernetes 集群搭建

Kubernetes 是如何搞定“不可變基礎設施”的

Kubernetes Pod:最小調度單元的使用進階及實踐

Kubernetes 無狀態應用:剖析K8S業務副本及水平擴展底層原理

Kubernetes 有狀態應用:K8S如何通過 StatefulSet 支持有狀態應用

Kubernetes 配置管理:K8S管理業務配置方式有哪些

Kubernetes 存儲類型:如何挑選合適的存儲插件

Kubernetes 存儲管理:怎樣對業務數據進行持久化存儲

Kubernetes基礎篇—Kubernetes 入門到實戰

Kubernetes 入門到實戰(一)俯瞰kubernetes全貌

Kubernetes 入門到實戰(二)kubeadm部署kubernetes集群

Kubernetes 入門到實戰(三)kubernetes快速入門

Kubernetes 入門到實戰(四)kubernetes dashboard圖形界面

Kubernetes應用部署

Kubernetes 部署WordPress博客

Kubernetes 部署Nginx+php-fpm+MySQL并運行Discuz

Kubernetes 使用StatefulSet部署MySQL高可用集群

Kubernetes 使用StatefulSet部署MongoDB高可用集群

Kubernetes 包管理工具—Helm2.13安裝和使用

Kubernetes Helm2部署gitlab私有代碼倉庫

Kubernetes Helm2部署MySQL數據庫

Kubernetes 包管理工具—Helm3.3安裝和使用

Kubernetes Helm3部署MySQL數據庫

Kubernetes Helm3部署kubernetes-dashboard

Kubernetes Helm3部署nginx-ingress ?NodePort方式

Kubernetes Helm3部署nginx-ingress ?LoadBalancer方式

Kubernetes監控

Kubernetes 部署Prometheus+Grafana+Alertmanager監控告警系統

Kubernetes Prometheus監控Nginx

Kubernetes Prometheus監控MySQL

Kubernetes Prometheus監控tomcat

Kubernetes 部署kube-prometheus監控告警系統

Kubernetes kube-prometheus中添加自定義監控項-監控etcd

Kubernetes kube-prometheus監控指標targets

Kubernetes kube-prometheus配置kubernetes-cadvisor服務自動發現

Kubernetes kube-prometheus Configuration信息

Kubernetes kube-prometheus中添加自定義監控項-監控MySQL

Kubernetes Grafana匿名登錄/密碼登錄Kubernetes

Kubernetes Grafana遷移(導出導入)dashboard

Kubernetes Grafana數據持久化

Kubernetes日志

Kubernetes 使用Elastic Stack構建Kubernetes全棧監控

Kubernetes 日志架構

Kubernetes 使用 Loki 進行日志監控和報警

Kubernetes故障排除

Kubernetes 刪除namespace時卡在Terminating狀態

Kubernetes deploy,rs,sts Mismatch 的處理

Kubernetes master機器文件系統故障恢復過程

Kubernetes 如何修改容器時間而不改變宿主機時間?

Kubernetes面試問題

Kubernetes IT運維面試問題總結-簡述Etcd、Kubernetes、Lvs、HAProxy等

Kubernetes 50個必須了解的Kubernetes面試問題

Kubernetes 面試題匯總1

Kubernetes 面試題匯總2

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的8s pod 查看 的yaml_Kubernetes入门到实战(五)深入浅出详解Pod的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 福利久久久 | 色射网| 黄色1级大片 | 国产一区二区在线看 | 亚洲黄业| 中文字幕在线播 | 天天躁日日躁狠狠躁喷水 | 偷偷操不一样 | 我要看18毛片| 特黄老太婆aa毛毛片 | 四季av国产一区二区三区 | 日本精品一区二区 | 久草国产精品视频 | 黄色福利网站 | 亚洲国产精品视频在线观看 | 美女黄色大片 | 99热只有这里有精品 | 性歌舞团一区二区三区视频 | 天天看天天射 | 欧美一区二区三区免费观看 | 麻豆一区二区三区 | 国产亚洲欧美精品久久久www | 爱情岛黄色 | 成人自拍视频在线观看 | 亚洲视频第一页 | 国产乱淫a∨片免费视频 | 成年人av在线 | 欧美sm凌虐视频网站 | 成人高潮片免费视频 | 精品一区二区三区免费视频 | 色女人影院 | 国产免费观看视频 | 日本免费三级网站 | yy4138理论片动漫理论片 | 免费不卡av在线 | 婷婷色在线视频 | 人妻与黑人一区二区三区 | 伊人精品视频 | 久久久久久久久免费看无码 | 极品人妻videosss人妻 | 东北少妇不戴套对白第一次 | 国产精品三级在线 | 最新黄色av网址 | 成人黄色三级视频 | 亚洲AV无码久久精品国产一区 | 亚洲一区二区视频网站 | 黄色一级片av| 国产精品一区二区三区免费观看 | 亚洲第一视频 | 国产综合久久久久 | www.成人免费| 999成人网 | 阿娇全套94张未删图久久 | 亚洲午夜在线视频 | 国产在线视频99 | 精品一区二区在线观看视频 | 午夜影院日本 | aaaaa一级片| 国产精品av在线免费观看 | 黑人巨大av | 日本在线高清视频 | 久久性爱视频网站 | 在线免费观看日韩视频 | 国产又粗又大又爽视频 | 五月婷婷婷| 法国空姐在线观看视频 | 国产一区二区三区免费看 | 国产成人免费av一区二区午夜 | 91亚洲视频在线 | 黄色一区二区三区四区 | 青娱乐在线播放 | av中文字幕一区 | 欧美大浪妇猛交饥渴大叫 | 99视频国产精品免费观看a | 久久在线免费 | 蜜桃视频一区二区三区在线观看 | 日韩中文字幕免费在线观看 | 黄色一级片免费在线观看 | 女王人厕视频2ⅴk | 色综合九九 | 日韩欧美国产成人精品免费 | 日韩美女激情 | 久久99国产综合精品免费 | 激情免费网站 | 生活片毛片 | 成人久久国产 | 日韩中文字幕久久 | 五月婷婷六月天 | 国产主播精品 | 日韩欧美精品在线观看 | 国产精品国产三级国产专区51区 | 亚洲乱人伦 | 哺乳援交吃奶在线播放 | 欧美性猛交xxxx免费看 | 黄色片中文字幕 | 亚洲天堂一区 | 欧美精品国产一区 | 国产农村熟妇videos | 上原亚衣在线观看 |