K8s叢集備份還原與遷移利器-Velero

农夫运维發表於2024-04-06

一、簡介

Velero 是一款雲原生時代的災難恢復和遷移工具,採用 Go 語言編寫,並在 github 上進行了開源,利用 velero 使用者可以安全的備份、恢復和遷移 Kubernetes 叢集資源和持久卷。

  • 開源地址:https://github.com/vmware-tanzu/velero
  • 官方文件:https://velero.io/docs/v1.11/

1.1 支援的版本列表

alt text

1.2 Velero元件

Velero 元件一共分兩部分,分別是服務端和客戶端。

  • 服務端:執行在你 Kubernetes 的叢集中
  • 客戶端:是一些執行在本地的命令列的工具,需要已配置好 kubectl 及叢集 kubeconfig 的機器上

1.3 velero備份流程

  1. velero客戶端呼叫kubernetes API Server建立backup任務
  2. Backup控制器基於watch機制透過Api Server獲取到備份任務
  3. Backup控制器開始執行備份動作,會透過請求Api Server獲取到需要備份的資料
  4. Backup 控制器將獲取到的資料備份到指定的物件儲存server端

img

1.4 Velero後端儲存

Velero支援兩種關於後端儲存的CRD,分別是BackupStorageLocationVolumeSnapshotLocation

1.4.1 BackupStorageLocation

主要用來定義 Kubernetes 叢集資源的資料存放位置,也就是叢集物件資料,不是 PVC 的資料。主要支援的後端儲存是 S3 相容的儲存,比如:Mino 和阿里雲 OSS 等。

1.4.2 VolumeSnapshotLocation

主要用來給 PV 做快照,需要雲提供商提供外掛。阿里雲已經提供了外掛,這個需要使用 CSI 等儲存機制。你也可以使用專門的備份工具 Restic,把 PV 資料備份到阿里雲 OSS 中去(安裝時需要自定義選項)。

Restic 是一款 GO 語言開發的資料加密備份工具,顧名思義,可以將本地資料加密後傳輸到指定的倉庫。支援的倉庫有 Local、SFTP、Aws S3、Minio、OpenStack Swift、Backblaze B2、Azure BS、Google Cloud storage、Rest Server。

二、安裝velero客戶端

Github Release 頁面下載指定的 velero 二進位制客戶端安裝包,比如這裡我們下載我們k8s叢集對應的版本為 v1.11.1

版本列表:https://github.com/vmware-tanzu/velero/releases

2.1 安裝velero命令程式

$ wget https://github.com/vmware-tanzu/velero/releases/download/v1.11.1/velero-v1.11.1-linux-amd64.tar.gz
$ tar zxf velero-v1.11.1-linux-amd64.tar.gz
$ mv velero-v1.11.1-linux-amd64/velero /usr/bin/
$ velero -h
# 啟用命令補全
$ source <(velero completion bash)
$ velero completion bash > /etc/bash_completion.d/velero

2.2 安裝minio

Velero支援很多種儲存外掛,可檢視:Velero Docs - Providers獲取外掛資訊,我們這裡使用minio作為S3相容的物件儲存提供程式。您也可以在任意地方部署Minio物件儲存,只需要保證K8S叢集可以訪問到即可。

根據具體的業務場景選擇不同的儲存方式

# cat velero-v1.11.1-linux-amd64/examples/minio/00-minio-deployment.yaml 

# Copyright 2017 the Velero contributors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

---
apiVersion: v1
kind: Namespace
metadata:
  name: velero

---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: velero
  name: minio
  labels:
    component: minio
spec:
  strategy:
    type: Recreate
  selector:
    matchLabels:
      component: minio
  template:
    metadata:
      labels:
        component: minio
    spec:
      volumes:
      - name: storage
        emptyDir: {}
      - name: config
        emptyDir: {}
      containers:
      - name: minio
        image: minio/minio:latest
        imagePullPolicy: IfNotPresent
        args:
        - server
        - /storage
        - --config-dir=/config
        - --console-address=:9001
        env:
        - name: MINIO_ACCESS_KEY
          value: "minio"
        - name: MINIO_SECRET_KEY
          value: "minio123"
        ports:
        - containerPort: 9000
        volumeMounts:
        - name: storage
          mountPath: "/storage"
        - name: config
          mountPath: "/config"

---
apiVersion: v1
kind: Service
metadata:
  namespace: velero
  name: minio
  labels:
    component: minio
spec:
  # ClusterIP is recommended for production environments.
  # Change to NodePort if needed per documentation,
  # but only if you run Minio in a test/trial environment, for example with Minikube.
  type: NodePort
  ports:
    - name: api
      port: 9000
      targetPort: 9000
      nodePort: 32000
    - name: console
      port: 9001
      targetPort: 9001
      nodePort: 32001
  selector:
    component: minio

---
apiVersion: batch/v1
kind: Job
metadata:
  namespace: velero
  name: minio-setup
  labels:
    component: minio
spec:
  template:
    metadata:
      name: minio-setup
    spec:
      restartPolicy: OnFailure
      volumes:
      - name: config
        emptyDir: {}
      containers:
      - name: mc
        image: minio/mc:latest
        imagePullPolicy: IfNotPresent
        command:
        - /bin/sh
        - -c
        - "mc --config-dir=/config config host add velero http://minio:9000 minio minio123 && mc --config-dir=/config mb -p velero/velero"
        volumeMounts:
        - name: config
          mountPath: "/config"

2.3 建立minio應用

# 建立velero名稱空間
$ kubectl create namespace velero
# 建立minio資源
$ ]# kubectl apply -f  velero-v1.11.1-linux-amd64/examples/minio/00-minio-deployment.yaml
 
# 檢視部署狀態
$ kubectl get sts,pod,svc -n velero
NAME                         READY   STATUS      RESTARTS   AGE
pod/minio-78f994f86c-g86bp   1/1     Running     0          9m34s
pod/minio-setup-27jds        0/1     Completed   3          9m34s

NAME            TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                         AGE
service/minio   NodePort   10.68.151.238   <none>        9000:31657/TCP,9001:30282/TCP   9m34s
 
# 開放NodePort埠
$ kubectl patch svc minio -n velero -p '{"spec": {"type": "NodePort"}}'
$ kubectl patch svc minio -n velero --type='json' -p='[{"op": "replace", "path": "/spec/ports/0/nodePort", "value":9000},{"op": "replace", "path": "/spec/ports/1/nodePort", "value":9001}]'
 
]# kubectl get svc -n velero  
NAME    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                         AGE
minio   NodePort   10.68.151.238   <none>        9000:31657/TCP,9001:30282/TCP   3m12s

透過瀏覽器訪問伺服器IP:30282,並使用賬號minio密碼minio123登入驗證。
image-20240406205615216

2.4 物理機安裝minio

當然如果需要在不同 Kubernetes 和儲存池叢集備份與恢復資料,需要將 minio 服務端安裝在 Kubernetes 叢集外,保證在叢集發生災難性故障時,不會對備份資料產生影響,可以透過二進位制的方式進行安裝。

在待安裝 minio 的伺服器上下載二進位制包

➜  ~ wget https://dl.minio.io/server/minio/release/linux-amd64/minio
➜  ~ chmod +x minio
➜  ~ sudo mv minio /usr/local/bin/
➜  ~ minio --version

準備物件儲存的磁碟,這裡我們跳過該步驟,可以使用 systemd 來方便管理 minio 服務,對於使用 systemd init 系統執行系統的人,請建立用於執行 minio 服務的使用者和組:

➜  ~ sudo groupadd --system minio
➜  ~ sudo useradd -s /sbin/nologin --system -g minio minio

/data(上述步驟準備好的磁碟掛載位置)目錄提供 minio 使用者所有權:

➜  ~ sudo chown -R minio:minio /data/

為 minio 建立 systemd 服務單元檔案:

➜  ~ vi /etc/systemd/system/minio.service
[Unit]
Description=Minio
Documentation=https://docs.minio.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/data
User=minio
Group=minio
EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
# Let systemd restart this service always
Restart=always
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

建立 minio 環境檔案 /etc/default/minio

# Volume to be used for Minio server.
MINIO_VOLUMES="/data"

# Use if you want to run Minio on a custom port.
MINIO_OPTS="--address :9000"

# Access Key of the server.
MINIO_ACCESS_KEY=minio

# Secret key of the server.
MINIO_SECRET_KEY=minio123

其中 MINIO_ACCESS_KEY 為長度至少為3個字元的訪問金鑰,MINIO_SECRET_KEY 為最少8個字元的金鑰。重新載入 systemd 並啟動 minio 服務:

➜  ~ sudo systemctl daemon-reload
➜  ~ sudo systemctl start minio

關於 minio 的更多使用方法可以參考官方文件 https://docs.min.io/ 瞭解更多。

三 、安裝 velero 服務端

我們可以使用 velero 客戶端來安裝服務端,也可以使用 Helm Chart 來進行安裝,比如這裡我們用客戶端來安裝,velero 命令預設讀取 kubectl 配置的叢集上下文,所以前提是 velero 客戶端所在的節點有可訪問叢集的 kubeconfig 配置。

3.1 建立金鑰

首先準備金鑰檔案,在當前目錄建立一個空白文字檔案,內容如下所示:

$ cat > credentials-velero <<EOF
[default]
aws_access_key_id = minio
aws_secret_access_key = minio123
EOF

3.2 安裝velero到k8s叢集

替換為之前步驟中 minio 的對應 access key id 和 secret access key如果 minio 安裝在 kubernetes 叢集內時按照如下命令安裝 velero 服務端:

$ velero install \
  --provider aws \
  --image velero/velero:v1.11.1 \
  --plugins velero/velero-plugin-for-aws:v1.7.1 \
  --bucket velero \
  --secret-file ./credentials-velero \
  --use-node-agent \
  --use-volume-snapshots=false \
  --namespace velero \
  --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio:9000 \
  --wait
# 執行install命令後會建立一系列清單,包括CustomResourceDefinition、Namespace、Deployment等。
# velero install .... --dry-run -o yaml > velero_deploy.yaml 如果為私倉,可以透過--dry-run 匯出 YAML 檔案調整在應用。

# 可使用如下命令檢視執行日誌
$ kubectl logs deployment/velero -n velero
 
# 檢視velero建立的api物件
$ kubectl api-versions | grep velero
velero.io/v1
 
# 檢視備份位置
$ velero backup-location get
NAME      PROVIDER   BUCKET/PREFIX   PHASE       LAST VALIDATED                  ACCESS MODE   DEFAULT
default   aws        velero          Available   2023-03-28 15:45:30 +0800 CST   ReadWrite     true

#解除安裝命令
# velero uninstall --namespace velero
You are about to uninstall Velero.
Are you sure you want to continue (Y/N)? y
Waiting for velero namespace "velero" to be deleted
............................................................................................................................................................................................
Velero namespace "velero" deleted
Velero uninstalled ⛵

選項說明:

  • --kubeconfig(可選):指定kubeconfig認證檔案,預設使用.kube/config
  • --provider:定義外掛提供方;
  • --image:定義執行velero的映象,預設與velero客戶端一致;
  • --plugins:指定使用aws s3相容的外掛映象;
  • --bucket:指定物件儲存Bucket桶名稱;
  • --secret-file:指定物件儲存認證檔案;
  • --use-node-agent:建立Velero Node Agent守護程序,託管FSB模組;
  • --use-volume-snapshots:是否啟使用快照;
  • --namespace:指定部署的namespace名稱,預設為velero;
  • --backup-location-config:指定物件儲存地址資訊;

aws外掛與velero版本對應關係
image-20240406180846706

3.3 解除安裝velero

如果您想從叢集中完全解除安裝Velero,則以下命令將刪除由velero install建立的所有資源:

kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero

四、備份與恢復

備份命令:velero create backup NAME [flags]
backup選項:

  • --exclude-namespaces stringArray : 要從備份中排除的名稱空間
  • --exclude-resources stringArray: 要從備份中排除的資源,如storageclasses.storage.k8s.io
  • --include-cluster-resources optionalBool[=true]: 包含叢集資源型別
  • --include-namespaces stringArray: 要包含在備份中的名稱空間(預設'*')
  • --include-resources stringArray: 備份中要包括的資源
  • --labels mapStringString: 給這個備份加上標籤
  • -o, --output string: 指定輸出格式,支援'table'、'json'和'yaml';
  • -l, --selector labelSelector: 對指定標籤的資源進行備份
  • --snapshot-volumes optionalBool[=true]: 對 PV 建立快照
  • --storage-location string: 指定備份的位置
  • --ttl duration: 備份資料多久刪掉
  • --volume-snapshot-locations strings: 指定快照的位置,也就是哪一個公有云驅動

4.1 備份

4.1.1 使用官方案例建立測試應用
$ kubectl apply -f examples/nginx-app/base.yaml 
namespace/nginx-example created
deployment.apps/nginx-deployment created
service/my-nginx created
 
# 檢視資源清單
$ kubectl get all -n nginx-example
NAME                                    READY   STATUS              RESTARTS   AGE
pod/nginx-deployment-5c844b66c8-7fsb9   0/1     ContainerCreating   0          32s
pod/nginx-deployment-5c844b66c8-dh4bn   1/1     Running             0          4m53s
pod/nginx-deployment-5c844b66c8-q2dc5   0/1     Terminating         0          4m53s

NAME               TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
service/my-nginx   LoadBalancer   10.68.79.207   <pending>     80:32435/TCP   4m53s

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-deployment   1/2     2            1           4m53s

NAME                                          DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-deployment-5c844b66c8   2         2         1       4m53s
4.1.2 備份測試應用
$ velero backup create nginx-backup --include-namespaces nginx-example
Backup request "nginx-backup" submitted successfully.
Run `velero backup describe nginx-backup` or `velero backup logs nginx-backup` for more details.

選項:

  • --include-namespaces:指定名稱空間
  • --selector:標籤選擇器,如app=nginx
4.1.3 檢視備份列表
$ velero backup get
NAME           STATUS      ERRORS   WARNINGS   CREATED                         EXPIRES   STORAGE LOCATION   SELECTOR
nginx-backup   Completed   0        0          2024-04-06 21:47:16 +0800 CST   29d       default            <none>
 
# 檢視備份詳細資訊
$ velero backup describe nginx-backup
 
# 檢視備份日誌
$ velero backup logs nginx-backup

登入minio控制檯檢視備份內容
image-20240406215419990

4.1.4 定時備份指南
# 使用cron表示式備份
$ velero schedule create nginx-daily --schedule="0 1 * * *" --include-namespaces nginx-example
 
# 使用一些非標準的速記 cron 表示式
$ velero schedule create nginx-daily --schedule="@daily" --include-namespaces nginx-example
 
# 手動觸發定時任務
$ velero backup create --from-schedule nginx-daily

更多cron示例請參考:cron package’s documentation

4.2 恢復

4.2.1 模擬災難
# 刪除nginx-example名稱空間和資源
$ kubectl delete namespace nginx-example
# 檢查是否刪除
$ kubectl get all -n nginx-example
No resources found in nginx-example namespace.
4.2.2 恢復資源
$ velero backup get
NAME           STATUS      ERRORS   WARNINGS   CREATED                         EXPIRES   STORAGE LOCATION   SELECTOR
nginx-backup   Completed   0        0          2024-04-06 21:47:16 +0800 CST   29d       default            <none>

$ velero restore create --from-backup nginx-backup
Restore request "nginx-backup-20240406215611" submitted successfully.
Run `velero restore describe nginx-backup-20240406215611` or `velero restore logs nginx-backup-20240406215611` for more details.
4.2.3 檢查恢復的資源
$ velero restore get
NAME                          BACKUP         STATUS      STARTED                         COMPLETED                       ERRORS   WARNINGS   CREATED                         SELECTOR
nginx-backup-20240406215611   nginx-backup   Completed   2024-04-06 21:56:11 +0800 CST   2024-04-06 21:56:12 +0800 CST   0        2          2024-04-06 21:56:11 +0800 CST   <none>
 
# 檢視詳細資訊
$ velero restore describe nginx-backup-20240406215611
 
# 檢查資源狀態
$ kubectl get all -n nginx-example
NAME                                    READY   STATUS    RESTARTS   AGE
pod/nginx-deployment-5c844b66c8-7fsb9   1/1     Running   0          67s
pod/nginx-deployment-5c844b66c8-dh4bn   1/1     Running   0          67s

NAME               TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/my-nginx   LoadBalancer   10.68.171.131   <pending>     80:30635/TCP   67s

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-deployment   2/2     2            2           67s

NAME                                          DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-deployment-5c844b66c8   2         2         2       67s

五、專案遷移實戰

5.1、專案介紹

我們將使用Velero快速完成雲原生應用PV資料的遷移實踐過程,在本文示例中,我們將A叢集中的一個MOS應用遷移到叢集B中,其中資料備份採用自建Minio物件儲存服務。
img

5.1.1 環境要求
  1. 遷移專案最好保證兩個Kubernetes叢集版本一致。
  2. 為了保證PV資料成功遷移,兩邊需要安裝好相同名字的StorageClass
  3. 可以自己部署Minio,也可以使用公有云的物件儲存服務,如華為的OBS、阿里的OSS等。
  4. 本案例將叢集A中app-system名稱空間中的服務及PV資料遷移到叢集B中。
5.1.2 專案環境
角色 叢集IP 叢集版本 部署軟體
K8S 叢集A 192.168.19.128
192.168.19.129
192.168.19.130
192.168.19.131
v1.23.1 velero、istio-system
K8S 叢集B 192.168.19.140
192.168.19.141
192.168.19.142
v1.23.17 velero、minio
5.1.3 專案說明

我們需要將叢集A中 istio-system 空間的所有資源和資料全部遷移到叢集B中,該專案包括了deploymentstatefulsetserviceingressjobcronjobsecretconfigmappvpvc

# 專案清單資訊
$ kubectl get deployment,sts,pvc -n istio-system
NAME                                   READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/grafana                1/1     1            1           62d
deployment.apps/istio-egressgateway    1/1     1            1           62d
deployment.apps/istio-ingressgateway   1/1     1            1           62d
deployment.apps/istiod                 1/1     1            1           62d
deployment.apps/jaeger                 1/1     1            1           62d
deployment.apps/kiali                  1/1     1            1           62d
deployment.apps/prometheus             1/1     1            1           62d

5.2 準備物件儲存

按照2.22.3的方法在叢集B(192.168.19.140)中建立minio應用,用來存放備份資料。

$ kubectl get deployment,svc -n velero
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/minio   1/1     1            1           5m27s

NAME            TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)                         AGE
service/minio   NodePort   10.96.3.195   <none>        9000:32000/TCP,9001:32001/TCP   4m44s

5.3 安裝velero

請確保在叢集A叢集B中已經安裝好velero客戶端,請參考2.1 安裝velero命令程式

5.3.1 在叢集A中安裝velero服務
$ cat > credentials-velero <<EOF
[default]
aws_access_key_id = minio
aws_secret_access_key = minio123
EOF
 
$ velero install \
  --provider aws \
  --image velero/velero:v1.11.1 \
  --plugins velero/velero-plugin-for-aws:v1.7.1 \
  --bucket velero \
  --secret-file ./credentials-velero \
  --use-node-agent \
  --use-volume-snapshots=false \
  --namespace velero \
  --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://192.168.19.140:32000 \
  --wait

注意:其中S3的地址指向叢集B(192.168.19.140)的minio物件儲存。

5.3.2 在叢集B種安裝velero服務
$ cat > credentials-velero <<EOF
[default]
aws_access_key_id = minio
aws_secret_access_key = minio123
EOF
 
$ velero install \
  --provider aws \
  --image velero/velero:v1.11.1 \
  --plugins velero/velero-plugin-for-aws:v1.7.1 \
  --bucket velero \
  --secret-file ./credentials-velero \
  --use-node-agent \
  --use-volume-snapshots=false \
  --namespace velero \
  --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio:9000 \
  --wait

注意:其中S3的地址指向本叢集minio物件儲存的svc地址。

5.4 備份MOS專案

$ velero backup create istio-backup \
  --default-volumes-to-fs-backup \
  --include-namespaces istio-system
Backup request "istio-backup" submitted successfully.
Run `velero backup describe istio-backup` or `velero backup logs istio-backup` for more details.
 
# 檢視備份狀態;可以看到狀態正在進行中
$ velero backup get
NAME           STATUS       ERRORS   WARNINGS   CREATED                         EXPIRES   STORAGE LOCATION   SELECTOR
istio-backup   InProgress   0        0          2024-04-06 22:33:36 +0800 CST   29d       default            <none>

# 等待狀態為Completed
$ velero backup get
NAME           STATUS      ERRORS   WARNINGS   CREATED                         EXPIRES   STORAGE LOCATION   SELECTOR
istio-backup   Completed   0        0          2024-04-06 22:33:36 +0800 CST   29d       default            <none>
  • --default-volumes-to-fs-backup:預設將所有PV捲進行備份,詳情檢視官方文件
  • --include-namespaces:指定要備份的名稱空間

登入minio控制檯上可以看到備份的檔案:
image-20240406223849900

5.5 恢復到叢集B

# 到叢集B中檢視備份資源
$ velero backup get
NAME           STATUS      ERRORS   WARNINGS   CREATED                         EXPIRES   STORAGE LOCATION   SELECTOR
istio-backup   Completed   0        0          2024-04-06 22:33:36 +0800 CST   29d       default            <none>

# 執行恢復命令
$ velero restore create --from-backup istio-backup
Restore request "istio-backup-20240406224033" submitted successfully.
Run `velero restore describe istio-backup-20240406224033` or `velero restore logs istio-backup-20240406224033` for more details.
 
# 檢視恢復任務; 可以看到任務正在進行中,等待為Completed表示恢復完成
$ velero restore get
NAME                          BACKUP         STATUS       STARTED                         COMPLETED   ERRORS   WARNINGS   CREATED                         SELECTOR
istio-backup-20240406224033   istio-backup   InProgress   2024-04-06 22:40:33 +0800 CST   <nil>       0        0          2024-04-06 22:40:33 +0800 CST   <none>

5.6 驗證服務和資料

$ kubectl get all -n istio-system
NAME                                       READY   STATUS              RESTARTS   AGE
pod/grafana-b854c6c8-cn244                 1/1     Running             0          7m50s
pod/istio-egressgateway-85df6b84b7-ccqmg   1/1     Running             0          7m50s
pod/istio-ingressgateway-58ffd5967-9kqf7   1/1     Running             0          7m49s
pod/istiod-8d74787f-7skg6                  1/1     Running             0          7m49s
pod/jaeger-5556cd8fcf-5f75s                1/1     Running             0          7m49s
pod/kiali-648847c8c4-rztws                 1/1     Running             0          7m49s
pod/prometheus-7b8b9dd44c-nzff4            2/2     Running             0          7m49s

NAME                           TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)                                                                                      AGE
service/grafana                ClusterIP      10.96.3.122   <none>        3000/TCP                                                                                     7m47s
service/istio-egressgateway    ClusterIP      10.96.0.74    <none>        80/TCP,443/TCP                                                                               7m47s
service/istio-ingressgateway   LoadBalancer   10.96.2.36    <pending>     15021:30083/TCP,80:32311/TCP,443:32260/TCP,31400:30872/TCP,15443:32641/TCP,31401:31020/TCP   7m47s
service/istiod                 ClusterIP      10.96.2.246   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP                                                        7m47s
service/jaeger-collector       ClusterIP      10.96.1.101   <none>        14268/TCP,14250/TCP,9411/TCP                                                                 7m47s
service/kiali                  ClusterIP      10.96.3.3     <none>        20001/TCP,9090/TCP                                                                           7m47s
service/prometheus             ClusterIP      10.96.1.113   <none>        9090/TCP                                                                                     7m47s
service/tracing                NodePort       10.96.1.187   <none>        80:31721/TCP,16685:30582/TCP                                                                 7m47s
service/zipkin                 ClusterIP      10.96.1.44    <none>        9411/TCP                                                                                     7m46s

NAME                                   READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/grafana                1/1     1            1           7m45s
deployment.apps/istio-egressgateway    1/1     1            1           7m45s
deployment.apps/istio-ingressgateway   1/1     1            1           7m45s
deployment.apps/istiod                 1/1     1            1           7m45s
deployment.apps/jaeger                 1/1     1            1           7m45s
deployment.apps/kiali                  0/1     1            0           7m45s
deployment.apps/prometheus             1/1     1            1           7m44s

NAME                                              DESIRED   CURRENT   READY   AGE
replicaset.apps/grafana-b854c6c8                  1         1         1       7m49s
replicaset.apps/istio-egressgateway-85df6b84b7    1         1         1       7m49s
replicaset.apps/istio-ingressgateway-58ffd5967    1         1         1       7m49s
replicaset.apps/istio-ingressgateway-6bb8fb6549   0         0         0       7m49s
replicaset.apps/istiod-8d74787f                   1         1         1       7m49s
replicaset.apps/jaeger-5556cd8fcf                 1         1         1       7m48s
replicaset.apps/kiali-648847c8c4                  1         1         0       7m48s
replicaset.apps/prometheus-7b8b9dd44c             1         1         1       7m48s

相關文章