部署成功截圖:
?
?
要在 Kubernetes (K8s) 集群中拉取 Grafana 鏡像并創建 Grafana 容器,您可以按照以下步驟使用命令行完成操作。下面是完整的命令步驟,包括如何創建 Deployment 和 Service,以及如何將 Grafana 容器暴露給外部。1. 創建一個 Deployment 文件 (grafana-deployment.yaml)
首先,您需要創建一個 Kubernetes Deployment 來運行 Grafana 容器。使用以下命令來創建該文件。cat <<EOF > grafana-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: grafananamespace: kube-pm # 可以根據需要修改命名空間
spec:replicas: 1 # 創建一個副本selector:matchLabels:app: grafanatemplate:metadata:labels:app: grafanaspec:containers:- name: grafanaimage: grafana/grafana:9.5.3 # 拉取的 Grafana 鏡像版本imagePullPolicy: IfNotPresent # 如果本地沒有該鏡像,則會拉取ports:- containerPort: 3000 # Grafana 服務監聽的端口env:- name: GF_SECURITY_ADMIN_USERvalue: admin- name: GF_SECURITY_ADMIN_PASSWORDvalue: admin123resources:limits:cpu: "250m"memory: "512Mi"requests:cpu: "250m"memory: "512Mi"readinessProbe:httpGet:path: /api/healthport: 3000initialDelaySeconds: 30periodSeconds: 10livenessProbe:httpGet:path: /api/healthport: 3000initialDelaySeconds: 60periodSeconds: 10
EOF2. 創建一個 Service 文件 (grafana-service.yaml)
然后,創建一個 Kubernetes Service 來暴露 Grafana 服務,讓它可以通過集群外部訪問。cat <<EOF > grafana-service.yaml
apiVersion: v1
kind: Service
metadata:name: grafananamespace: kube-pm # 與 Deployment 使用相同的命名空間
spec:type: NodePort # 使用 NodePort 類型ports:- port: 3000 # 容器端口targetPort: 3000 # 服務端口nodePort: 31474 # 外部訪問的端口selector:app: grafana
EOF3. 創建 PersistentVolume 和 PersistentVolumeClaim 文件 (grafana-pv-pvc.yaml)
Grafana 會將數據(如 dashboard 和插件)保存在 /var/lib/grafana 目錄下,因此需要持久化存儲數據。下面是 PersistentVolume 和 PersistentVolumeClaim 的創建命令。cat <<EOF > grafana-pv-pvc.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: grafana-locallabels:app: grafana
spec:accessModes:- ReadWriteOncecapacity:storage: 1GistorageClassName: local-storagelocal:path: /data/k8s/grafana # 確保宿主機節點上該路徑存在并具有適當權限persistentVolumeReclaimPolicy: RetainnodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- k8swork2 # 選擇正確的節點
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: grafana-datanamespace: kube-pm
spec:selector:matchLabels:app: grafanaaccessModes:- ReadWriteOnceresources:requests:storage: 1GistorageClassName: local-storage
EOF4. 執行命令部署 Grafana
接下來,使用 kubectl 命令將這些 YAML 文件應用到 Kubernetes 集群中。1). 部署 PersistentVolume 和 PersistentVolumeClaim:
kubectl apply -f grafana-pv-pvc.yaml
2). 部署 Grafana Deployment:
kubectl apply -f grafana-deployment.yaml
3). 部署 Grafana Service:
kubectl apply -f grafana-service.yaml5. 驗證部署
您可以使用以下命令來檢查 Pods 和服務是否正常工作:
1). 查看 Grafana Pods 狀態:
kubectl get pods -n kube-pm -l app=grafana
2). 查看 Grafana 服務:
kubectl get svc -n kube-pm6. 訪問 Grafana
如果所有資源都創建成功并且 Pod 正在運行,您就可以通過瀏覽器訪問 Grafana:
http://<任意節點IP>:31474
這里的 <任意節點IP></任意節點IP>`` 是 Kubernetes 集群中任何一個節點的 IP 地址。例如,如果節點的 IP 是 192.168.1.100,那么 Grafana 將通過 http://192.168.1.100:31474` 訪問。總結
以上步驟展示了如何:
使用 kubectl 創建一個 Deployment 來拉取 Grafana 鏡像并啟動容器。
使用 Service 暴露 Grafana 服務。
配置持久化存儲,確保 Grafana 的數據不會丟失。
?
?