(k8s)Kubernetes本地存储接入

hostpath也是本地存储,为什么要使用local模式的存储呢?

因为创建deployment时,无需指定调度具体节点。会自动调度到pv所在的节点运行。

Tip:local模式存储节点异常后,意味着pod启动不起来

1、创建local模式存储类

$ cat <<EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
EOF

2、创建pv

$ cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
  name: test
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  local:
    path: /data/test-local-pv
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - k8s-node01
EOF

3、创建pvc

$ cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-local-pvc
  namespace: default
spec:
  storageClassName: local-storage
  volumeMode: Filesystem
  accessModes: 
  - ReadWriteOnce
  resources:
    requests:
      storage: 10G
EOF

Tip:local模式存储,创建好pv和pvc并不会马上绑定。因为local模式的存储类volumeBindingMode 的值必须是 WaitForFirstConsumer ,所以只有当pod使用pvc时,pv和pvc才进行绑定的。

4、创建业务容器并挂载

$ cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tools
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tools
  template:
    metadata:
      labels:
        app: tools
    spec:
      containers:
      - name: tools
        image: registry.cn-guangzhou.aliyuncs.com/jiaxzeng6918/tools:v1.1
        volumeMounts:
        - name: data
          mountPath: /data
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: test-local-pvc
EOF

5、查看运行pod运行节点

$ kubectl get pod -owide
NAME                     READY   STATUS    RESTARTS   AGE     IP             NODE         NOMINATED NODE   READINESS GATES
tools-6f6f7cd4bf-jjlbg   1/1     Running   0          3m16s   10.244.0.209   k8s-node01   <none>           <none>

6、验证pod是否挂载成功

$ kubectl exec -it tools-6f6f7cd4bf-jjlbg -- df -h /data
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        62G  4.1G   58G   7% /data

Tip:local模式存储不能限制存储大小

Kubernetes(简称为K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。Prometheus是一种开源的监控系统,用于收集和存储时间序列数据,并提供强大的查询和告警功能。 要将外部的Prometheus接入Kubernetes集群,可以按照以下步骤进行操作: 1. 部署Prometheus Operator:Prometheus Operator是一个Kubernetes控制器,用于自动化部署和管理Prometheus实例。可以使用Helm Chart或kubectl命令来安装Prometheus Operator。 2. 创建Prometheus实例:使用Prometheus Operator创建一个Prometheus实例,该实例将负责收集和存储监控数据。可以通过定义Prometheus资源清单文件(例如YAML文件)来创建实例,并指定需要监控的目标。 3. 配置ServiceMonitor:ServiceMonitor是Prometheus Operator的一种资源类型,用于定义需要监控的Kubernetes服务。通过创建ServiceMonitor资源清单文件,并指定需要监控的服务和相关标签,将服务与Prometheus实例关联起来。 4. 配置Prometheus规则:Prometheus规则用于定义告警规则和报警通知方式。可以通过创建PrometheusRule资源清单文件,并指定相应的规则和通知配置,将规则与Prometheus实例关联起来。 5. 配置Prometheus数据源:在外部的Prometheus中,需要配置Kubernetes集群作为数据源。可以通过修改Prometheus配置文件,添加Kubernetes集群的API地址和认证信息,以便Prometheus能够获取Kubernetes相关的监控数据。 6. 验证和测试:完成上述配置后,可以通过访问Prometheus的Web界面或使用PromQL语言进行查询,来验证是否成功接入外部的Prometheus。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值