成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

K8s 創建資源的兩種方式

系統 Linux
在本文中,我將通過示例解釋這兩種方法,以及它們分別應該在何時使用。

在 K8s 中,創建資源有兩種方式:

  • 直接使用 kubectl run 命令創建
  • 使用 kubectl create/apply 命令從 YAML 文件創建

在本文中,我將通過示例解釋這兩種方法,以及它們分別應該在何時使用。

kubectl run

kubectl run 命令在 pod 中創建并運行特定的鏡像。例如:

$ kubectl run nginx --image=nginx --port 80
pod/nginx created
$ kubectl get po nginx
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 25s

如果您對這個新 pod 執行 kubectl describe 命令,您將看到:

$ kubectl describe po nginx
Name: nginx
Namespace: default
Priority: 0
Node: ip-10-0-0-146.ec2.internal/10.0.0.146
Start Time: Sat, 09 Apr 2022 16:56:29 -0400
Labels: run=nginx
Annotations: kubernetes.io/psp: eks.privileged
Status: Running
IP: 10.0.0.69
IPs:
IP: 10.0.0.69

請注意,Labels 是 run=nginx。

您還可以在 run 命令中指定環境變量,例如:

$ kubectl run nginx --image=nginx --port 80 --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"

如果您現在執行 kubectl describe nginx,就可以看到我們剛剛提供的新環境變量:

$ kubectl describe po nginx | grep "Env" -A2
Environment:
DNS_DOMAIN: cluster
POD_NAMESPACE: default

通常,kubectl run 命令用于一些簡單、直觀和快速的任務,它適用于 ad-hoc(點對點網絡模式)的測試或實驗。

kubectl kubectl create/apply

kubectl create/apply 命令基于給定的配置文件。該配置文件具有以下特點:

  1. 配置文件描述了應用程序最終將達到的 Whatstate。
  2. 配置文件提供創建資源的模板,可以重復部署。
  3. 部署可以像代碼一樣進行管理。
  4. 適用于正式的、跨環境的、大規模的部署。
  5. 需要熟悉配置文件的語法才能使用此方法。

讓我們再看一個例子。我們將創建相同的 nginx pod,這一次,讓我們通過 YAML 文件來完成:

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80

不用在意 Deployment 文件語法,我將在另一篇文章中討論 K8s Deployment。

讓我們使用 kubectl create 命令來創建資源:

$ kubectl create -f nginx-deployment.yaml
deployment.apps/nginx created
$ kubectl get po
NAME READY STATUS RESTARTS AGE
nginx-6799fc88d8-k7tfl 1/1 Running 0 5s
$ kubectl delete -f nginx-deployment.yaml
deployment.apps "nginx" deleted

您還可以使用 kubectl apply 命令:

$ kubectl apply -f nginx-deployment.yaml
deployment.apps/nginx created
$ kubectl get po
NAME READY STATUS RESTARTS AGE
nginx-6799fc88d8-2fsxk 1/1 Running 0 17s
$ kubectl delete -f nginx-deployment.yaml
deployment.apps "nginx" deleted

可以看到,create 和 apply 命令都可以用來創建資源,但是二者有什么區別呢?

kubectl create 與 kubectl apply

讓我們談談 create 和 apply 之間的區別。

create

此命令將告訴 K8s API 服務器,您要創建、刪除或替換一個或多個資源。以更簡化的方式,這意味著您可以從頭開始創建一個全新的對象。或者,它通過定義需求對任何現有對象進行一些更改。

apply

此命令意味著通過在給定的 YAML 文件中聲明您確切需要的內容來更改已經存在的對象。

為了演示,讓我們使用 nginx Deployment 文件。首先,讓我們創建資源:

$ kubectl create -f nginx-deployment.yaml
deployment.apps/nginx created

現在,假設我們要向 pod 添加一個 label,將 label 更新為:

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
env: prod
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
env: prod
spec:
containers:
- name: nginx
image: nginx

如果再次運行 create 命令:

$ kubectl create -f nginx-deployment.yaml
Error from server (AlreadyExists): error when creating "nginx-deployment.yaml": deployments.apps "nginx" already exists

即使 YAML 文件略有不同,您也會收到 “nginx” 已存在的錯誤。

那如果你運行 kubectl apply 呢?讓我們試一試:

$ kubectl apply -f nginx-deployment.yaml
deployment.apps/nginx configured

現在讓我們描述一下資源:

$ kubectl get po
NAME READY STATUS RESTARTS AGE
nginx-595f565474-zkl4t 1/1 Running 0 3m39s
$ kubectl describe po nginx-595f565474-zkl4t
Name: nginx-595f565474-zkl4t
Namespace: default
Priority: 0
Node: ip-10-0-0-146.ec2.internal/10.0.0.146
Start Time: Sat, 09 Apr 2022 17:20:04 -0400
Labels: app=nginx
env=prod
pod-template-hash=595f565474

您可以看到應用了新的 labels 是 env=prod。

現在我們了解了 kubectl create 和 kubectl apply 之間的區別,您可能想知道應該使用哪一個?

在 kubectl create 命令中,我們指定了一個特定行為,也就是 create,因此它是一種更具命令式的方法。在 kubectl apply 命令中,我們指定系統的目標狀態,而不指定一個特定的行為,因此它是更具聲明性的方法。我們讓系統決定采取什么行動。如果資源不存在,它將創建它,如果資源存在,則它將配置應用于現有資源。

簡單來說,如果對單個文件運行一個操作來創建資源,create 和 apply 基本是相同的。但是,apply 允許您在一個目錄中的多個文件上同時創建和修補。

我希望你喜歡這個小知識分享,我會在下一篇文章中見到你!

責任編輯:龐桂玉 來源: 馬哥Linux運維
相關推薦

2011-03-23 11:22:14

oracle dbli

2011-03-03 10:26:04

Pureftpd

2021-05-27 10:57:01

TCP定時器網絡協議

2009-06-25 13:43:00

Buffalo AJA

2010-10-21 16:24:18

sql server升

2010-08-06 09:38:11

Flex讀取XML

2023-03-29 13:06:36

2010-09-07 11:09:59

2022-04-22 13:32:01

K8s容器引擎架構

2021-10-19 10:56:00

插件工程方式

2023-11-06 07:16:22

WasmK8s模塊

2010-07-27 15:03:37

Flex ArrayC

2010-05-10 18:19:00

負載平衡技術

2024-09-20 11:32:28

.NET內存管理

2010-07-14 10:30:26

Perl多線程

2010-07-15 14:38:55

Perl eval函數

2010-08-03 13:27:04

FlexBuilder

2011-04-02 09:48:38

深拷貝

2016-11-07 09:02:02

Malloc內存syscall

2011-06-16 10:02:08

JAVA靜態載入
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品成人一区二区三区夜夜夜 | 2019天天操 | 不卡一二三区 | 久久tv在线观看 | 国产亚洲成av人片在线观看桃 | 国产精品不卡一区 | 日本久久www成人免 成人久久久久 | www.国产精品 | 欧美一区二区三区在线看 | 最新国产精品精品视频 | 国产欧美一区二区精品久导航 | 久久高清| 精品视频网 | 久草精品在线 | 免费国产视频 | 国产精品久久久亚洲 | 国产视频日韩 | h视频免费在线观看 | 日本高清在线一区 | 日本三级网址 | 国产小视频在线观看 | 国产精品视频一区二区三 | 欧美一区二区三区精品 | h片在线观看网站 | 欧美成ee人免费视频 | 亚洲国产精品一区二区三区 | 99精品一区二区三区 | 99久久久国产精品 | 在线超碰 | 国产成人高清视频 | 中文在线a在线 | 国产亚洲精品久久19p | 91青青草视频 | 视频一区二区中文字幕日韩 | 国产精品一区二区三区免费观看 | 中文字幕亚洲欧美 | 久久久久久亚洲国产精品 | 国产精品中文字幕在线 | 超碰超碰 | 欧美一区在线视频 | 高清国产一区二区 |