日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)kubernetes教程:Kubernetes 名字空間演練

名字空間演練

Kubernetes 名字空間 有助于不同的項(xiàng)目、團(tuán)隊(duì)或客戶去共享 Kubernetes 集群。

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比中山網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式中山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋中山地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。

名字空間通過以下方式實(shí)現(xiàn)這點(diǎn):

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

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

此示例演示了如何使用 Kubernetes 名字空間細(xì)分集群。

在開始之前

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

  • Katacoda
  • 玩轉(zhuǎn) Kubernetes

要檢查版本,請(qǐng)輸入 kubectl version。

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

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

  1. 你已擁有一個(gè)配置好的 Kubernetes 集群。
  2. 你已對(duì) Kubernetes 的 Pods、 Services 和 Deployments 有基本理解。

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

默認(rèn)情況下,Kubernetes 集群會(huì)在配置集群時(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è)場(chǎng)景,某組織正在使用共享的 Kubernetes 集群來支持開發(fā)和生產(chǎn):

開發(fā)團(tuán)隊(duì)希望在集群中維護(hù)一個(gè)空間,以便他們可以查看用于構(gòu)建和運(yùn)行其應(yīng)用程序的 Pod、Service 和 Deployment 列表。在這個(gè)空間里,Kubernetes 資源被自由地加入或移除, 對(duì)誰能夠或不能修改資源的限制被放寬,以實(shí)現(xiàn)敏捷開發(fā)。

運(yùn)維團(tuán)隊(duì)希望在集群中維護(hù)一個(gè)空間,以便他們可以強(qiáng)制實(shí)施一些嚴(yán)格的規(guī)程, 對(duì)誰可以或誰不可以操作運(yùn)行生產(chǎn)站點(diǎn)的 Pod、Service 和 Deployment 集合進(jìn)行控制。

該組織可以遵循的一種模式是將 Kubernetes 集群劃分為兩個(gè)名字空間:?development ?和 ?production?。

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

文件 ?namespace-dev.json? 描述了 ?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.json

將下列的內(nèi)容保存到文件 ?namespace-prod.json? 中, 這些內(nèi)容是對(duì) ?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.json

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

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

在每個(gè)名字空間中創(chuàng)建 pod

Kubernetes 名字空間為集群中的 Pod、Service 和 Deployment 提供了作用域。

與一個(gè)名字空間交互的用戶不會(huì)看到另一個(gè)名字空間中的內(nèi)容。

為了演示這一點(diǎn),讓我們?cè)?nbsp;development 名字空間中啟動(dòng)一個(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ù)制。

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)情況下,上述命令會(huì)添加兩個(gè)上下文到 ?.kube/config? 文件中。 你現(xiàn)在可以查看上下文并根據(jù)你希望使用的名字空間并在這兩個(gè)新的請(qǐ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
- 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ā)出的所有請(qǐng)求都限定在 ?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: k8s.gcr.io/serve_hostname
        imagePullPolicy: Always
        name: snowflake

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

我們創(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

這很棒,開發(fā)人員可以做他們想要的事情,而不必?fù)?dān)心影響 ?production ?名字空間中的內(nèi)容。

讓我們切換到 ?production ?名字空間,展示一個(gè)名字空間中的資源如何對(duì)另一個(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=k8s.gcr.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)建的資源對(duì)另一個(gè)名字空間是不可見的。

隨著 Kubernetes 中的策略支持的發(fā)展,我們將擴(kuò)展此場(chǎng)景,以展示如何為每個(gè)名字空間提供不同的授權(quán)規(guī)則。


文章名稱:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes 名字空間演練
本文鏈接:http://www.5511xx.com/article/dghhhjg.html