国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

k8s-基礎知識(Pod,Deployment,ReplicaSet)

這篇具有很好參考價值的文章主要介紹了k8s-基礎知識(Pod,Deployment,ReplicaSet)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

k8s職責

  • 自動化容器部署和復制
  • 隨時擴展或收縮容器
  • 容器分組group,并且提供容器間的負載均衡
  • 實時監(jiān)控,即時故障發(fā)現(xiàn),自動替換

k8s概念及架構(gòu)

k8s-基礎知識(Pod,Deployment,ReplicaSet),docker && k8s && devops,kubernetes,容器,Pod,Deployment,docker

pod

pod是容器的容器,可以包含多個container
pod是k8s最小可部署單元,容器的本質(zhì)是一個隔離的進程,而Pod則是一組相互聯(lián)系的進程(進程組)。Pod 內(nèi)的多個容器共享網(wǎng)絡和文件系統(tǒng),可以通過進程間通信和文件共享這種簡單高效的方式組合完成服務。
pod內(nèi)部容器網(wǎng)絡互通,每個pod都有獨立虛擬IP。
pod都是部署完整的應用或模塊(項目中通常:一個pod部署一個應用,或部署一個應用的一部分)。
k8s-基礎知識(Pod,Deployment,ReplicaSet),docker && k8s && devops,kubernetes,容器,Pod,Deployment,docker

#獲取節(jié)點
kubectl get pods

k8s-基礎知識(Pod,Deployment,ReplicaSet),docker && k8s && devops,kubernetes,容器,Pod,Deployment,docker

#通過kubectl 運行一節(jié)點
kubectl run nginx-pod --image=nginx

k8s-基礎知識(Pod,Deployment,ReplicaSet),docker && k8s && devops,kubernetes,容器,Pod,Deployment,docker

#查看詳細信息
kubectl describe pod nginx-pod

k8s-基礎知識(Pod,Deployment,ReplicaSet),docker && k8s && devops,kubernetes,容器,Pod,Deployment,docker

#查看拓展信息 可以看到IP等信息
kubectl get pods -o wide

k8s-基礎知識(Pod,Deployment,ReplicaSet),docker && k8s && devops,kubernetes,容器,Pod,Deployment,docker
提醒:官方不退年使用kubectl 命令來創(chuàng)建pod,推薦使用yml的方式來創(chuàng)建pod

YAML 方式創(chuàng)建POD
apiVersion: v1
kind: Pod
metadata:
  name: demo-pod
  labels: 
    app: demonginx
    type: nginxservice
spec:
  containers:
  - name: nginx
    image: nginx
#創(chuàng)建并啟動pod 下面兩個命令是一樣的效果
kubectl create -f pod-ngix.yml
kubectl apply -f pod-ngix.yml
#停止pod
kubectl delete -f pod-ngix.yml

字段說明
apiVersion:API版本號。根據(jù)創(chuàng)建的內(nèi)容,必須使用正確的API版本,不同版本號支持的功能可能不太一樣。V1, app/V1beta,extensions/V1beta,等等
kind:資源類型,類型指的是創(chuàng)建的對象的類型,其他可能的值 Pod, Service, ReplicaSet, Deployment.
metadata:用來描述這個pod的元信息,比如名稱和標簽。有了這個元信息,我們區(qū)分這個pod,方便眾多pod進行篩選。比如我們可以pod標識為前端應用,后端應用,數(shù)據(jù)庫,中間件等。
spec: 其中container是一個數(shù)組,因為pod中可以有多個容器,名字前面的破折號表示這是列表中的第一個項目。列表中的每一個元素又是一個字典,所以要添加一個名稱和image屬性。image的值是nginx,這是docker倉庫中的docker鏡像。

ReplicationController

Pod 可以通過控制器來管理。它可以監(jiān)測Kubernetes對象并及時反應,有下面這兩個應用場景:
1 保證高可用,比如一個節(jié)點掛掉了,控制器會監(jiān)測到會立即開啟一個新的節(jié)點繼續(xù)提供服務。
2 負載均衡,比如我們需要一個服務維持在3個節(jié)點以負載均衡。那么比如我們一個節(jié)點所在的宿主機的資源耗盡了,這個時候控制器可以調(diào)度在集群的其它機器上再創(chuàng)建一個節(jié)點,始終保持這個服務有三個節(jié)點來提供服務。

apiVersion: v1
kind: ReplicationController
metadata:
  name: demo-rc
  labels: 
    app: demonginx
    type: nginxservice
spec:
  template:
    metadata:
      name: ningx-pod
      labels: 
        app: nginxapp
    spec:
      containers:
      - name: nginx
        image: nginx
  replicas: 3

可以看到和前面的yml非常的類似,只是這次我們在spec定義了一個模板,這個模板就是比如我們一個節(jié)點掛掉了,這個時候控制器可以用這個模板來創(chuàng)建副本。同時replicas制定了節(jié)點數(shù)量為三個。

提醒:這里有個現(xiàn)象,比如你之前用命令行創(chuàng)建了一個pod,然后pod的標簽和使用rc的一樣,你會發(fā)現(xiàn)rc在啟動的時候會直接把這個節(jié)點拿過來直接使用,也就是實際上只創(chuàng)建了兩個節(jié)點

ReplicaSet

ReplicaSet與ReplicationController非常相似。ReplicaSet則相當于ReplicationController的升級版,它的作用也是控制pod的數(shù)量始終維持在預設的個數(shù)。

apiVersion: apps/v1 #注意需要使用這個版本
kind: ReplicaSet
metadata:
  name: demo-rc
  labels: 
    app: demonginx
    type: nginxservice
spec:
  template:
    metadata:
      name: ningx-pod
      labels: 
        app: nginxapp
        type: nginxservice #注意下面 selector 指定的matchLabels 要和這里的labels來對應
    spec:
      containers:
      - name: nginx
        image: nginx
  replicas: 3
  selector: 
    matchLabels:
      #這個是指定使用那個標簽的服務 比如之前有一個服務標簽叫這個 會直接拿過來用 和ReplicationController 一樣 只是 ReplicationController不顯示的定義,默認與pod定義文件中提供的標簽相同
      type: nginxservice
#查看replicaset
kubectl get replicaset
#查看詳細信息
kubectl describe replicaset demo-rs
擴容

使用下面命令:

kubectl scale replicaset myapp-rs --replicas=6
#修改命令 直接修改配置yml文件 修改以后k8會響應變化 demo-rc為replicaset名稱
kubectl edit rs  demo-rc 

Deployment

官方推薦不要直接使用ReplicaSet,用Deployments。Deployment可以通過selector來匹配labels字段,過濾出它所關(guān)心的被控制對象。
Deployment不直接管理Pod對象,而是由Deployment管理ReplicaSet,再由ReplicaSet負責管理Pod對象。
Deployment為我們提供了使用滾動更新無縫升級底層實例的能力,e.g.撤銷變化,暫停,并根據(jù)需要恢復變化。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deployment
  labels: 
    app: myapp
    type: myservice
spec:
  selector: 
    matchLabels:
      type: myservice
  replicas: 3
  template:
    metadata:
      name: myapp-pod
      labels: 
        app: myapp
        type: myservice
    spec:
      containers:
      - name: nginx
        image: nginx
#查看
kubectl get deployments
#查看所有資源
kubectl get all
kubectl describe deploy demo-deploy
滾動更新與回滾
kubectl create -f myapp-deploy.yml --record #通過--record 執(zhí)行以后就可以看到history里面多了一條 記錄

k8s-基礎知識(Pod,Deployment,ReplicaSet),docker && k8s && devops,kubernetes,容器,Pod,Deployment,docker

#我們可以看到滾動更新的日志
kubectl edit deployment myapp-deployment --record && kubectl rollout status deployment/myapp-deployment

k8s-基礎知識(Pod,Deployment,ReplicaSet),docker && k8s && devops,kubernetes,容器,Pod,Deployment,docker

#在執(zhí)行一次鏡像修改
kubectl set image deployment myapp-deployment nginx=nginx:perl --record && kubectl rollout status deployment/myapp-deployment

k8s-基礎知識(Pod,Deployment,ReplicaSet),docker && k8s && devops,kubernetes,容器,Pod,Deployment,docker

kubectl describe pod  myapp-deployment-f5b5cdd5-22278

我們可以看到鏡像已經(jīng)變成了perl
k8s-基礎知識(Pod,Deployment,ReplicaSet),docker && k8s && devops,kubernetes,容器,Pod,Deployment,docker
接著我們做一次回滾

kubectl rollout undo deployment/myapp-deployment

可以看到就是把1拿過來重新執(zhí)行一遍:
k8s-基礎知識(Pod,Deployment,ReplicaSet),docker && k8s && devops,kubernetes,容器,Pod,Deployment,docker
deployment 可以簡寫為deploy ,我們可以通過kubectl api-resources 這個命令來查看
這里有那些命令可以簡寫,簡寫成什么,對應的版本是什么
k8s-基礎知識(Pod,Deployment,ReplicaSet),docker && k8s && devops,kubernetes,容器,Pod,Deployment,docker

多容器Pod

微服務架構(gòu)允許我們根據(jù)需要使用需要擴展?縮減以及修改每個服務, 而不是修改整個應用程序?
有時可能需要兩個服務一起工作,例如Web服務器和日志記錄服務?每個Web服務器實例都需要一個日志收集代理一組?但是二者具有獨立的代碼庫,單獨開發(fā)和部署?文章來源地址http://www.zghlxwxcb.cn/news/detail-819000.html

  • 共享同一Pod生命周期, 一起創(chuàng)建和銷毀?
  • 共享相同的網(wǎng)絡空間,可以通過localhost相互訪問,
  • 共享存儲卷?
    pod yaml文件中spec部分下的container部分是一個數(shù)組,允許一個pod中有多個container
 apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels: 
    app: myapp
    type: myservice
spec:
  containers: #這里指定了多個容器
  - name: nginx
    image: nginx
  - name: log-agent
    image: log-agent

到了這里,關(guān)于k8s-基礎知識(Pod,Deployment,ReplicaSet)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • k8s deployment創(chuàng)建pod流程圖

    k8s deployment創(chuàng)建pod流程圖

    k8s 創(chuàng)建pod和deployment的流程 - SoulChild隨筆記

    2024年02月11日
    瀏覽(88)
  • k8s基礎知識

    理解docker [二] - namespace - 知乎 Kubernetes Controller 機制詳解(一)-趙化冰的博客 | Zhaohuabing Blog K8S之自定義Controller - 知乎 Controller - K8S - 知乎 https://coolshell.cn/articles/17010.html/comment-page-2#comment-2133157 https://windsock.io/uts-namespace/ A Brief Tour of Linux Security Modules — Star Lab Software https://w

    2024年01月24日
    瀏覽(21)
  • 在學習k8s時候,pod services 和deployment

    在學習 Kubernetes(K8s)時,Pod、Service 和 Deployment 是三個非常重要的概念。它們是 Kubernetes 中用于管理容器化應用程序的核心組件。 Pod(Pods): Pod 是 Kubernetes 最基本的調(diào)度和管理單位,它是一個或多個緊密關(guān)聯(lián)的容器的組合。Pod 提供了一個獨立的運行環(huán)境,包含應用程序所

    2024年02月11日
    瀏覽(21)
  • 02 k8s考試基礎知識(一)

    02 k8s考試基礎知識(一)

    服務發(fā)現(xiàn)負載平衡 , 服務很方便的給外部用戶 方便回滾和故障恢復 有金主爸爸們(google 紅帽之類的) master(或者叫做Control Plane) 這邊4個 etcl 存儲這個分布式集群的信息 apiserver 通信用的 controller manage 這個是apiserver的小弟,沒有主意的古惑仔 schedule 這個是apiserver的小弟之

    2024年02月03日
    瀏覽(51)
  • k8s(Kubernetes)設置 pod,Deployment 域名自定義映射ip,hosts 解析 HostAliases

    直接 編輯修改 Deployment 最后內(nèi)容如下,如需保存 按 esc 鍵,最后輸入 :wq 保存退出,容器會自動重新生成新的

    2024年02月12日
    瀏覽(55)
  • k8s-基礎知識(Service,NodePort,CusterIP,NameSpace,資源限制)

    k8s-基礎知識(Service,NodePort,CusterIP,NameSpace,資源限制)

    Node Node 是 Pod 真正運行的主機,可以是物理機,也可以是虛擬機。 Annotations 原文鏈接 Annotations 是 key/value 形式附加于對象的注解。不同于 Labels 用于標志和選擇對象,Annotations 則是用來記錄一些附加信息,用來輔助應用部署、安全策略以及調(diào)度策略等。比如 deployment 使用 an

    2024年01月24日
    瀏覽(24)
  • 【Java】基于fabric8io庫操作k8s集群實戰(zhàn)(pod、deployment、service、volume)

    【Java】基于fabric8io庫操作k8s集群實戰(zhàn)(pod、deployment、service、volume)

    一開始了解到Java Api庫操作k8s集群,有兩個,分別為: kubernetes-client/java fabric8io/kubernetes-client 但個人對比使用了兩個發(fā)現(xiàn),還是 fabric8io更易用 ,用的人多是有道理的, fabric8io和yaml文件十分貼切 ,所以 通俗易懂 。本文前提是已配置好集群,已經(jīng)熟悉了kubectl工具常用命令。

    2024年02月02日
    瀏覽(19)
  • K8s(五)ReplicaSet控制器

    K8s(五)ReplicaSet控制器

    在Kubernetes(簡稱K8s)中,控制器是負責管理和維護集群中資源狀態(tài)的組件??刂破鞅O(jiān)視集群中的對象,并根據(jù)它們的預期狀態(tài)來采取行動,以確保系統(tǒng)的期望狀態(tài)與實際狀態(tài)保持一致。 對于自主式pod來說,刪除pod之后pod就直接消失了,如果因為一些誤操作或pod錯誤退出,就

    2024年01月21日
    瀏覽(25)
  • k8s基礎4——deployment控制器、應用部署、升級、回滾、水平擴容縮容

    k8s基礎4——deployment控制器、應用部署、升級、回滾、水平擴容縮容

    基本了解: Deployment是最常用的K8s工作負載控制器(Workload Controllers),實際項目部署調(diào)試中必用資源之一,所以必須要熟練掌握deploy資源的使用。 它是K8s的一個抽象概念,用于更高級層次對象,部署和管理Pod。 其他控制器還有DaemonSet、StatefulSet等,不同控制器針對不同的需

    2024年02月03日
    瀏覽(28)
  • k8s基礎:使用kubectl set image命令更新Deployment中容器的鏡像

    在Kubernetes中,使用 kubectl 更新Deployment中容器的鏡像,可以使用以下命令: 例如,如果你有一個名為 myapp 的 Deployment,其中包含一個名為 mycontainer 的容器,你想將鏡像從 myregistry/myimage:v1 更新到 myregistry/myimage:v2 ,可以執(zhí)行: 這條命令將會觸發(fā)一個滾動更新,根據(jù)你的Deploy

    2024年04月26日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包