久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Kubernetes名字空間

2023-12-15 106

隨著集群規(guī)模的擴(kuò)大和業(yè)務(wù)復(fù)雜度的增加,如何有效地管理和組織資源成為了一個(gè)重要的問題。為了解決這個(gè)問題,Kubernetes提供了名字空間(Namespace)這一強(qiáng)大的功能,它允許將集群中的資源進(jìn)行細(xì)分,從而實(shí)現(xiàn)更好的資源隔離和管理。接下來將詳細(xì)介紹如何使用Kubernetes名字空間來細(xì)分集群。

Kubernetes 名字空間有助于不同的項(xiàng)目、團(tuán)隊(duì)或客戶去共享 Kubernetes 集群。名字空間通過以下方式實(shí)現(xiàn):

  • 為名字設(shè)置作用域;
  • 為集群中的部分資源關(guān)聯(lián)鑒權(quán)和策略的機(jī)制。

使用多個(gè)名字空間是可選的。

一、準(zhǔn)備

必須擁有一個(gè) Kubernetes 的集群,同時(shí)必須配置 kubectl 命令行工具與集群通信。 建議在至少有兩個(gè)不作為控制平面主機(jī)的節(jié)點(diǎn)的集群上運(yùn)行本教程。 如果還沒有集群,可以通過 Minikube 構(gòu)建一個(gè)自己的集群,或者可以使用下面的 Kubernetes 練習(xí)環(huán)境之一:

  • Killercoda
  • 玩轉(zhuǎn) Kubernetes

要獲知版本信息,請輸入 kubectl version.

二、環(huán)境準(zhǔn)備

此示例作如下假設(shè):

  • 已擁有一個(gè)配置好的 Kubernetes 集群;
  • 已對 Kubernetes 的 Pod、 服務(wù) 和 Deployment 有基本理解。

三、理解默認(rèn)名字空間

默認(rèn)情況下,Kubernetes 集群會在配置集群時(shí)實(shí)例化一個(gè)默認(rèn)名字空間,用以存放集群所使用的默認(rèn) Pod、Service 和 Deployment 集合。

假設(shè)有一個(gè)新的集群,可以通過執(zhí)行以下操作來檢查可用的名字空間:

kubectl get namespaces
NAME??????STATUS????AGE
default???Active????13m

四、創(chuàng)建新名字空間

在本練習(xí)中,將創(chuàng)建兩個(gè)額外的 Kubernetes 名字空間來保存的內(nèi)容。假設(shè)一個(gè)場景,某組織正在使用共享的 Kubernetes 集群來支持開發(fā)和生產(chǎn):

  • 開發(fā)團(tuán)隊(duì)希望在集群中維護(hù)一個(gè)空間,以便他們可以查看用于構(gòu)建和運(yùn)行其應(yīng)用程序的 Pod、Service 和 Deployment 列表。在這個(gè)空間里,Kubernetes 資源被自由地加入或移除, 對誰能夠或不能修改資源的限制被放寬,以實(shí)現(xiàn)敏捷開發(fā)。
  • 運(yùn)維團(tuán)隊(duì)希望在集群中維護(hù)一個(gè)空間,以便他們可以強(qiáng)制實(shí)施一些嚴(yán)格的規(guī)程, 對誰可以或誰不可以操作運(yùn)行生產(chǎn)站點(diǎn)的 Pod、Service 和 Deployment 集合進(jìn)行控制。
  • 該組織可以遵循的一種模式是將 Kubernetes 集群劃分為兩個(gè)名字空間:development 和 production。

讓創(chuàng)建兩個(gè)新的名字空間來保存的工作。

文件 namespace-dev.yaml 描述了 development 名字空間:

apiVersion: v1
kind: Namespace
metadata:
name: development
labels:
name: development

使用 kubectl 創(chuàng)建 development 名字空間。

kubectl create -f https://k8s.io/examples/admin/namespace-dev.yaml

將下列的內(nèi)容保存到文件 namespace-prod.yaml 中, 這些內(nèi)容是對 production 名字空間的描述:

apiVersion: v1
kind: Namespace
metadata:
name: production
labels:
name: production

讓使用 kubectl 創(chuàng)建 production 名字空間。

kubectl create -f https://k8s.io/examples/admin/namespace-prod.yaml

為了確保一切正常,列出集群中的所有名字空間。

kubectl get namespaces --show-labels
NAME??????????STATUS????AGE???????LABELS
default???????Active????32m???????<none>
development???Active????29s???????name=development
production????Active????23s???????name=production

五、創(chuàng)建Pod

Kubernetes 名字空間為集群中的 Pod、Service 和 Deployment 提供了作用域。與一個(gè)名字空間交互的用戶不會看到另一個(gè)名字空間中的內(nèi)容。

為了演示這一點(diǎn),讓在 development 名字空間中啟動一個(gè)簡單的 Deployment 和 Pod。首先檢查一下當(dāng)前的上下文:

kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: REDACTED
server: https://130.211.122.180
name: lithe-cocoa-92103_kubernetes
contexts:
- context:
cluster: lithe-cocoa-92103_kubernetes
user: lithe-cocoa-92103_kubernetes
name: lithe-cocoa-92103_kubernetes
current-context: lithe-cocoa-92103_kubernetes
kind: Config
preferences: {}
users:
- name: lithe-cocoa-92103_kubernetes
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
token: 65rZW78y8HbwXXtSXuUw9DbP4FLjHi4b
- name: lithe-cocoa-92103_kubernetes-basic-auth
user:
password: h5M0FtUUIflBSdI7
username: admin
kubectl config current-context
lithe-cocoa-92103_kubernetes

下一步是為 kubectl 客戶端定義一個(gè)上下文,以便在每個(gè)名字空間中工作。 “cluster” 和 “user” 字段的值將從當(dāng)前上下文中復(fù)制。

<code?class="language-shell"?data-lang="shell">kubectl?config?set-context?dev?--namespace=development?\
??--cluster=lithe-cocoa-92103_kubernetes?\
??--user=lithe-cocoa-92103_kubernetes

kubectl?config?set-context?prod?--namespace=production?\
??--cluster=lithe-cocoa-92103_kubernetes?\
??--user=lithe-cocoa-92103_kubernetes

默認(rèn)情況下,上述命令會添加兩個(gè)上下文到 .kube/config 文件中。 現(xiàn)在可以查看上下文并根據(jù)希望使用的名字空間并在這兩個(gè)新的請求上下文之間切換。

查看新的上下文:

kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: REDACTED
server: https://130.211.122.180
name: lithe-cocoa-92103_kubernetes
contexts:
- context:
cluster: lithe-cocoa-92103_kubernetes
user: lithe-cocoa-92103_kubernetes
name: lithe-cocoa-92103_kubernetes
- context:
cluster: lithe-cocoa-92103_kubernetes
namespace: development
user: lithe-cocoa-92103_kubernetes
name: dev
- context:
cluster: lithe-cocoa-92103_kubernetes
namespace: production
user: lithe-cocoa-92103_kubernetes
name: prod
current-context: lithe-cocoa-92103_kubernetes
kind: Config
preferences: {}
users:
- name: lithe-cocoa-92103_kubernetes
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
token: 65rZW78y8HbwXXtSXuUw9DbP4FLjHi4b
- name: lithe-cocoa-92103_kubernetes-basic-auth
user:
password: h5M0FtUUIflBSdI7
username: admin

切換到 development 名字空間進(jìn)行操作。

kubectl config use-context dev

可以使用下列命令驗(yàn)證當(dāng)前上下文:

kubectl config current-context
dev

此時(shí),從命令行向 Kubernetes 集群發(fā)出的所有請求都限定在 development 名字空間中。

讓創(chuàng)建一些內(nèi)容。

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: snowflake
name: snowflake
spec:
replicas: 2
selector:
matchLabels:
app: snowflake
template:
metadata:
labels:
app: snowflake
spec:
containers:
- image: registry.k8s.io/serve_hostname
imagePullPolicy: Always
name: snowflake

應(yīng)用清單文件來創(chuàng)建 Deployment。

kubectl apply -f https://k8s.io/examples/admin/snowflake-deployment.yaml

創(chuàng)建了一個(gè)副本大小為 2 的 Deployment,該 Deployment 運(yùn)行名為 snowflake 的 Pod, 其中包含一個(gè)僅提供主機(jī)名服務(wù)的基本容器。

kubectl get deployment
NAME?????????READY???UP-TO-DATE???AVAILABLE???AGE
snowflake????2/2?????2????????????2???????????2m
kubectl get pods -l app=snowflake
NAME?????????????????????????READY?????STATUS????RESTARTS???AGE
snowflake-3968820950-9dgr8???1/1???????Running???0??????????2m
snowflake-3968820950-vgc4n???1/1???????Running???0??????????2m

讓切換到 production 名字空間,展示一個(gè)名字空間中的資源如何對另一個(gè)名字空間不可見。

kubectl config use-context prod

production 名字空間應(yīng)該是空的,下列命令應(yīng)該返回的內(nèi)容為空。

kubectl get deployment
kubectl get pods

生產(chǎn)環(huán)境需要以放牛的方式運(yùn)維,讓創(chuàng)建一些名為 cattle 的 Pod。

kubectl create deployment cattle --image=registry.k8s.io/serve_hostname --replicas=5
kubectl get deployment
NAME?????????READY???UP-TO-DATE???AVAILABLE???AGE
cattle???????5/5?????5????????????5???????????10s
kubectl get pods -l run=cattle
NAME??????????????????????READY?????STATUS????RESTARTS???AGE
cattle-2263376956-41xy6???1/1???????Running???0??????????34s
cattle-2263376956-kw466???1/1???????Running???0??????????34s
cattle-2263376956-n4v97???1/1???????Running???0??????????34s
cattle-2263376956-p5p3i???1/1???????Running???0??????????34s
cattle-2263376956-sxpth???1/1???????Running???0??????????34s

此時(shí),應(yīng)該很清楚的展示了用戶在一個(gè)名字空間中創(chuàng)建的資源對另一個(gè)名字空間是不可見的。隨著 Kubernetes 中的策略支持的發(fā)展,將擴(kuò)展此場景,以展示如何為每個(gè)名字空間提供不同的授權(quán)規(guī)則。

  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請注明出處“站長百科”和原文地址。