Kubernetes-14:持久化存储PV、PVC和StatefulSet介绍及使用

PV、PVC简介

PersistentVolume(PV)

是由管理员设置的存储,它是集群的一部分,就像节点是集群中的资源一样,PV也是集群中的资源、PV是Volume之类的卷插件,但具有独立于使用PV的Pod的生命周期,此API对象包含存储实现的细节,即NFS、iSCSI或特定于云供应商的存储系统

 

PersistentVolumeClaim(PVC)

是用户存储的请求,它与Pod相似。Pod消耗节点资源,PVC消耗PV资源。Pod可以请求特定级别的资源(CPU和内存)。PVC可以请求特定pv的大小和访问模式(例如,可以以读/写一次或只读多次模式挂载)

 

静态PV

集群管理员呢创建一些PV,他们带有可供集群用户使用的实际存储细节。他们存在与Kubernetes API中,可用于消费。

 

PV与PVC的工作流程

  1. 首先将不同规格的存储(例如NFS存储,有5GB、10GB等)创建为PV
  2. 用户再将需要用到的存储的条件创建为PVC,PVC会在PV资源中寻找最匹配用户需求的PV
  3. 匹配到最优PV后,PVC与PV进行绑定,最后挂载到对应Pod中

 

持久化卷声明的保护

PVC保护的目的是确保由Pod正在使用的PVC不会从系统移除,因为如果被移除的话可能会导致数据丢失

当启用PVC保护alpha功能时,如果用户删除一个Pod正在使用的PVC,则该PVC不会被立即删除。PVC的删除将被推迟,知道PVC不再被任何Pod使用

 

PV访问模式

PersistentVolume可以以资源提供者支持的任何方式挂载到主机上。如下表所示,供应商具有不同的功能,每个PV的访问模式都将被设置为该卷支持的特定模式,例如,NFS可以支持多个读/写客户端,但特定的PV可能以只读方式导出到服务器上。每个PV都有一套自己的用来描述特定功能的访问模式

  • ReadWriteOnce——该卷可以被单个节点以读/写模式挂载
  • ReadOnlyMany——该卷可以被多个节点以只读模式挂载
  • ReadWriteMany——该卷可以被多个节点以读/写模式挂载

在命令行中,访问模式缩写为:

  • RWO - ReadWriteOnce
  • ROX - ReadOnlyMany
  • RWX - ReadWriteMany

一个pv卷一次只能使用一种访问模式挂载,即使它支持很多访问模式。

Volume插件 ReadWriteOnce ReadOnlyMany ReadWriteMany
AWSElasticBlockStoreAWSElasticBlockStore - -
AzureFile
AzureDisk - -
cephFS
FlexVolume - -
Flocker -
GCEPersistentDisk -
Glusterfs - -
HostPath -
NFS

 

回收策略

  • Retain(保留)——手动回收
  • Recycle(回收)——基本擦除(rm -rf /thevolume/*)
  • Delete(删除)——关联的存储资产将被删除

当前只有HostPath和NFS支持回收策略。AWS EBS、GCE PD等支持删除策略

 

状态

卷可以处于以下某种状态:

  • Available(可用) —— 一块空闲资源没有被任何声明绑定
  • Bound(已绑定) —— 卷已经被声明绑定
  • Released(已释放) —— 声明被删除,但是资源还没有被集群声明
  • Failed(失败) —— 该卷的自动回收失败

命令行会显示绑定到PV的PVC名称

 

持久化演示说明 —— NFS

1、安装NFS
## 安装nfs,服务器IP地址为:192.168.152.252
yum -y install  nfs-utils rpcbind

## 配置nfs配置文件,设置可连接主机及权限
vim /etc/exports
...
/alibaba  *(rw,no_root_squash,no_all_squash,sync)
<目录路径> <可连接ip,*代表全部> <目录及文件权限>
... 

## 创建共享目录,及设置目录权限
mkdir /alibaba
chmod 777 -R /chown nfsnobody /alibaba/

## 启动nfs服务及rpcbind服务
systemctl start nfs-server.service rpcbind

### 进入客户机,测试能否正常访问,注意每个节点都要测试,保证可挂载
## 客户机安装nfs客户端及rpcbind
utils rpcbind

## 创建挂载目录及挂载
mkdir /usr/local/rds
mount -t nfs 152.252:/alibaba /usr/local/rds/

[root@Centos8 rds]# df -h | grep alibaba 
152.252:/alibaba   17G  6.9G   11G   41% /usr/local/rds

## 进入目录,测试读写是否正常
cd /usr/local/rds/
vim test.txt
......

 

2、创建PV(Master节点:192.168.152.53)

vim pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfspv1
  labels:
      type: web
spec:
  capacity:    #容量
    storage: 1Gi #存储
  accessModes: #类型
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle #回收策略
  storageClassName: nfs #存储类别名称
  nfs:
    path: /alibaba
    server: 152.252

多创建几个pv,供后边的pvc使用

## 首先在nfs中多创建几个文件系统
[root@kubenode2 ~]# cat /etc/exports
/alibaba1 *(rw,1)">)
/alibaba2 *(rw,1)">)
/alibaba3 *(rw,1)">)
/alibaba4 *(rw,1)">)

## 重启nfs server和rpcbind
systemctl restart rpcbind nfs-server.service

## 再次去客户端挂载测试读写

创建好的pv如下

[root@Centos8 pv]# kubectl get pv 
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
nfspv1   1Gi        RWO            Recycle          Available           nfs                     5s
nfspv2   10Gi       RWX            Retain           Available           cloud                   5s
nfspv3   5Gi        RWO            Recycle          Available           nfs                     5s
nfspv4   100Gi      RWX            Recycle          Available           nfs                     5s

### 创建不同的类别,存储大小,读写类型
### 我这里一共创建四个pv

 

3、创建PVC

vim pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-nas
spec:
  accessModes:    # 选择类型
  - ReadWriteMany
  resources:    #选择容量
    requests:
      storage: 10Gi
  storageClassName: cloud    # 选择存储类别
  selector:        # 选择标签可以更加准确的绑定想要绑定的pv
    matchLabels:
      type: web
[root@Centos8 pv]# kubectl create -f pvc.yaml 
persistentvolumeclaim/pvc-nas created

[root@Centos8 pv]# kubectl get pvc 
NAME      STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
pvc-nas   Bound    nfspv2   10Gi       RWX            cloud          4s

[root@Centos8 pv]# kubectl get pv
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM           STORAGECLASS   REASON   AGE
nfspv2   10Gi       RWX            Retain           Bound       default/pvc-nas   cloud   

 

创建Deployment

vim pvc-deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: pvc-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.2.1
        imagePullPolicy: IfNotPresent
        ports:
        - name: web
          containerPort: 80
        volumeMounts:
        - name: pvc-nas    
          mountPath: /data    # 挂载路径
      volumes:
      - name: pvc-nas    # 定义的volume名字
        persistentVolumeClaim:    # 绑定pvc
          claimName: pvc-nas    #pvc的名字
[root@Centos8 pv]# kubectl create -f pvc-deployment.yaml 
deployment.extensions/pvc-deployment created
[root@Centos8 pv]# kubectl get pod 
NAME                             READY   STATUS    RESTARTS   AGE
pvc-deployment-db7b65ff8-6nz5g   1/1     Running   0          4s
pvc-deployment-db7b65ff8-9mthh             4s
pvc-deployment-db7b65ff8-kgx5w             4s

## 查看当前/data目录下文件
[root@Centos8 pv]# kubectl exec -it pvc-deployment-db7b65ff8-6nz5g -- ls /data
111
[root@Centos8 pv]# kubectl exec -it pvc-deployment-db7b65ff8-9mthh -- 
[root@Centos8 pv]# kubectl exec -it pvc-deployment-db7b65ff8-kgx5w -- 

## 向/data中创建文件
[root@Centos8 pv]# kubectl exec -it pvc-deployment-db7b65ff8-kgx5w -- touch /data/index.html 

## 再次查看,测试文件nas的共享存储
[root@Centos8 pv]# kubectl exec -it pvc-deployment-db7b65ff8-kgx5w --   index.html
[root@Centos8 pv]# kubectl exec -it pvc-deployment-db7b65ff8-9mthh --   index.html
[root@Centos8 pv]# kubectl exec -it pvc-deployment-db7b65ff8-6nz5g -- 111  index.html

## 删除Pod,检验数据的持久性
[root@Centos8 pv]# kubectl delete pod pvc-deployment-db7b65ff8-6nz5g 
pod "pvc-deployment-db7b65ff8-6nz5g" deleted
[root@Centos8 pv]# kubectl get pod 
NAME                             READY   STATUS    RESTARTS   AGE
pvc-deployment-db7b65ff8-9mthh   1/1     Running   0          3m11s
pvc-deployment-db7b65ff8-bnvw7   1/1     Running   0          47s
pvc-deployment-db7b65ff8-kgx5w   1/1     Running   0          3m11s

## 再次查看,依旧是这两个文件
[root@Centos8 pv]# kubectl exec -it pvc-deployment-db7b65ff8-bnvw7 -- ls /data
111  index.html

aliyunURL: https://help.aliyun.com/document_detail/100684.html?spm=a2c4g.11186623.6.1080.1668631aCuHGi2

4、创建StatefulSet

vim StatefulSet.yaml

apiVersion: v1
kind: Service
metadata:
  name: pvc-svc
  namespace: default
  labels:
    app: nginx
spec:
  clusterIP: None
  ports:
  - name: web
    port: 
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
  namespace: default
spec:
  replicas: 
  selector:
    matchLabels:
      app: nginx
  serviceName: "pvc-svc"
  template:
    metadata:
      labels:
        app: nginx
    spec:
      dnsPolicy: ClusterFirstWithHostNet #使pod使用k8s的dns而不是宿主机dns
      containers:
      - name: nginx
        image: hub.vfancloud.com/test/myapp:v1
        imagePullPolicy: IfNotPresent
        ports:
        -
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ ReadWriteOnce ]    #指定pv的读写策略
      storageClassName: nfs    #指定pv的存储类型
      resources:
        requests:
          storage: 1Gi    #指定pv的存储大小

 

查看Pod、PV信息

[root@Centos8 pv]# kubectl get pod 
NAME    READY   STATUS    RESTARTS   AGE
web-0             2m32s
web-1             2m30s
web-2   0/1     Pending             2m27s

### yaml文件中statefulSet指定副本数为3个,其中web-2一直处于pending状态
## 查看web-2描述,提示Pod没有可以绑定的pv
[root@Centos8 pv]# kubectl describe pod web-2
Events:
  Warning  FailedScheduling  66s (x3 over 3m47s)  default-scheduler  pod has unbound immediate PersistentVolumeClaims

##  再看PV的状态
### nfspv1和nfspv3的STATUS为Bound,已被绑定其他的均为Available可用状态
### 再来回顾一下上边yaml文件内容
### yaml中明确指出,accessModes必须为ReadWriteOnly,storageClassName必须为NFS,storage存储为1Gi,可见,第一个pod创建时直接绑定最合适nfspv1,第二个Pod创建时由于没有其他符合的nfs,所以绑定nfspv3,第三个Pod创建后,发现没有合适的pv了,所以一直保持pending状态
[root@Centos8 pv]# kubectl get pv 
NAME  CAPACITY ACCESS MODES RECLAIM POLICY STATUS  CLAIM         STORAGECLASS  
nfspv1   1Gi     RWO        Recycle      Bound     default/www-web-     nfs
nfspv2   10Gi    RWX        Retain       Available                       cloud
nfspv3   5Gi     RWO        Recycle      Bound     default/www-web-     nfs
nfspv4   100Gi   RWX        Recycle      Available                       nfs

 

测试访问Pod、NFS持久性(statefulSet特性)

## 在web-0所绑定的nfs下创建index.html文件,内容如下
[root@kubenode2 alibaba1]# cat index.html 
Are you ok?

## 访问web-0的http服务
[root@Centos8 pv]# curl http://10.244.3.56
Are you ok?

## 在web-1所绑定的nfs下创建index.html文件,内容如下
[root@kubenode2 alibaba3]#  index.html 
qbbbbbb
bbbbb

## 访问web-1的http服务
[root@Centos8 pv]# curl http:10.244.3.57
qbbbbbb
bbbbb

## 测试删除pod后,存储是否持久化
[root@Centos8 pv]# kubectl delete pod web-
pod web-0 deleted
[root@Centos8 pv]# kubectl get pod -o wide 
NAME    READY   STATUS    RESTARTS   AGE   IP     
web-0          9s    10.244.3.58

## ip已经发生改变,再次测试访问http,数据未变化
[root@Centos8 pv]# curl http:10.244.3.58
Are you ok?

aliyunURL: https://help.aliyun.com/document_detail/100013.html?spm=a2c4g.11186623.6.1084.562220d7kAeXTB

 

关于StatefulSet

1、匹配Pod name(网络标识)的模式为:(statefulset名称)-符号,比如上面的web-0,web-1

2、StatefulSet为每个Pod副本创建了一个DNS域名,域名格式为:$(podname).(headless server name),也就意味着服务间是通过Pod域名来通信而非Pod IP,因为Pod在Node发生故障时,会将Pod漂移到其他node节点,Pod IP会发生改变,但是Pod域名不会变化

3、StatefulSet使用Headless服务来控制Pod的域名,这个域名的FQDN为:(servicename).(namespace).svc.cluster.local,其中,"cluster.local"指的是集群的域名

4、根据VolumeClaimTemplates,为每个Pod创建一个pvc,pvc命名规则匹配模式:(volumeClaimTemplate.name)-(pod.name),比如www-web-0

5、删除Pod不会删除其pvc,手动删除pvc将自动释放pv

 

验证DNS解析

## 当前pod
[root@Centos8 pv]# kubectl get pod 
NAME                             READY   STATUS    RESTARTS   AGE
ingress-http2-84b79f86c8-l6w7z             8m33s
ingress-http2-84b79f86c8-sgsch             8m33s
ingress-http2-84b79f86c8-xm7tj             8m33s
web-0                                      24m
web-1                                      18m
web-2                                      20m

## 当前svc
[root@Centos8 pv]# kubectl get svc 
NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
ingress-svc2   ClusterIP   10.105.70.203   <none>        8080/TCP   9m4s
kubernetes     ClusterIP   10.96.0.1       <none>        443/TCP    84d
pvc-svc        ClusterIP   None            <none>        80/TCP     25m

## 访问statefulSet的pod,使用域名$(podname).(headless server name)的方式
[root@Centos8 pv]# kubectl exec -it web-0 -- nslookup web-1.pvc-svc

Name:      web-svc
Address 1: 3.90

或者

[root@Centos8 pv]# kubectl exec -it web-svc.default.svc.cluster.local.

Name:      web-svc.default.svc.cluster.local.
Address 

## 测试其他svc的Pod是否可以通过$(podname).(headless server name)的方式访问
[root@Centos8 pv]# kubectl exec -it ingress-http2-84b79f86c8-sgsch -- nslookup web-

或者

[root@Centos8 pv]# kubectl exec -it ingress-http2-84b79f86c8-sgsch -- nslookup web-0.pvc-3.88

## 此功能是通过无头(headless)服务进行绑定的,最终规则如下
[root@Centos8 pv]# dig -t -A pvc-svc.default.svc.cluster.local. @0.81
;; Warning,ignoring invalid type -A

; <<>> DiG 9.11.4-P2-RedHat-4-16.P2.el8 <<>> -t -A pvc-svc.default.svc.cluster.local. @
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY,status: NOERROR,1)">id: 14325
;; flags: qr rd; QUERY: 1,ANSWER: 2,AUTHORITY: 0,ADDITIONAL: 
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 4096
; COOKIE: 538aadec9b559ba0 (echoed)
;; QUESTION SECTION:
;pvc-svc.default.svc.cluster.local. IN    A

;; ANSWER SECTION:
pvc-svc.default.svc.cluster.local. 17 IN A    
pvc-svc.default.svc.cluster.local. 

;; Query time:  msec
;; SERVER: 0.81#53()
;; WHEN: 日 7月 05 11:41:24 CST 2020
;; MSG SIZE  rcvd: 172

 

statefulSet的启停顺序

  • 有序部署:部署StatefulSet时,如果有多个Pod副本,它们会被顺序的创建(从0到N-1),并且,在下一个Pod运行之前,之前的Pod必须是Ready或者Running的状态
  • 有序删除:当Pod被删除时,他们被终止的顺序是从N-1到0
  • 有序扩展:当Pod执行扩展操作时,与部署一样,他们之前的Pod必须是Running和Ready状态

statefulSet使用场景

  • 稳定的持久化存储,即Pod重新调度后还是能访问相同的持久化数据,基于PVC来实现
  • 稳定的网络表示符,即Pod重新调度后其PodNname与HostName不变
  • 有序部署,有序扩展,基于init Container来实现
  • 有序收缩

删除持久化存储pv、pvc

## 首先删除pvc的yaml文件,svc和statefulSet就会被删除
[root@Centos8 pv]# kubectl delete -f StatefulSet.yaml 
service  deleted
statefulset.apps web deleted

## 删除pvc
[root@Centos8 pv]# kubectl delete pvc --all
persistentvolumeclaim www-web-0 deleted
persistentvolumeclaim www-web-1www-web-2 deleted

## 确认
[root@Centos8 pv]# kubectl get pvc
No resources found.
[root@Centos8 pv]# kubectl get statefulset
No resources found.

## 查看pv,状态已经变为Released,虽然已经解除绑定,但还没有完全回收
[root@Centos8 pv]# kubectl get pv
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM               STORAGECLASS   REASON   AGE
nfspv1   1Gi        RWO            Recycle          Released    default/www-web-   nfs                     6d14h
nfspv2   10Gi       RWX            Retain           Available                       cloud                   6d14h
nfspv3   5Gi        RWO            Recycle          Released      default/www-web-   nfs                     6d14h
nfspv4   100Gi      RWX            Recycle          Available                       nfs                     6d14h

## 手动回收
[root@Centos8 pv]# kubectl edit pv nfspv3
把以下内容删除,然后保存
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: www-web-
    namespace: default
    resourceVersion: 323988
    uid: 32f75ce6-5462-42c1-9913-888c803b0bf4

## 再次查看,已经完全释放
[root@Centos8 pv]# kubectl get pv
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
nfspv1   1Gi        RWO            Recycle          Available           nfs                     6d14h
nfspv2   10Gi       RWX            Retain           Available           cloud                   6d14h
nfspv3   5Gi        RWO            Recycle          Available           nfs                     6d14h
nfspv4   100Gi      RWX            Recycle          Available           nfs                     6d14h

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读942次。kube-controller-manager 和 kubelet 是异步工作的,这意味着延迟可能包括任何的网络延迟、apiserver 的延迟、etcd 延迟,一个节点上的负载引起的延迟等等。当 Kubernetes 中 Node 节点出现状态异常的情况下,节点上的 Pod 会被重新调度到其他节点上去,但是有的时候我们会发现节点 Down 掉以后,Pod 并不会立即触发重新调度,这实际上就是和 Kubelet 的状态更新机制密切相关的,Kubernetes 提供了一些参数配置来触发重新调度的时间。_node-monitor-period
文章浏览阅读3.8k次。上篇文章详细介绍了弹性云混部的落地历程,弹性云是滴滴内部提供给网约车等核心服务的容器平台,其基于 k8s 实现了对海量 node 的管理和 pod 的调度。本文重点介绍弹性云的调度能力,分为以下部分:调度链路图:介绍当前弹性云调度体系链路,对架构体系有一个初步的认知k8s 调度能力的运用:整体介绍弹性云现在用到的 k8s 调度能力和对其的增强k8s 版本的升级:介绍到从 k8s 1.12 到 1...._滴滴机房 腾讯
文章浏览阅读897次。对于cpu来说,这种分配方式并不会有太大问题,因为cpu可以灵活调度,numa调度时我们只计算绑定了numa cpu的pod是可以接受的,但是对于内存来说,numa node上申请了的内存无法做到随时迁移,这就会导致调度器视角numa node的mem资源足够,但是等到pod真正使用时,由于没有绑定numa node的pod申请的内存,导致numa node的mem资源不足,造成swap中断或者远端内存申请,这会对绑定mem的pod来带来性能损耗。忽略了没有绑定numa node的pod资源。_kubectl numa
文章浏览阅读796次,点赞17次,收藏15次。只要在Service定义中设置了ClusterIp:None,就定义了一个HeadLess Service, 它与普通的Service关键区别在于它没有ClusterIp地址,如果解析HeadLess Service的DNS域名,则会返回该Service对应的全部Pod的EndPoint列表,这就意味着客户端是直接与后端的pod建立了TCP/IP链接进行通信的。一个Label是一个键值对。注解:属于资源对象的元数据,可以被理解为一种特殊的标签,不过更多的是与程序挂钩,通常用于实现资源对象属性的自定义扩展。
文章浏览阅读763次。但是此时如果配置成 NONE, 租户创建成功了,但是无法创建资源文件,也就是无法上传文件,可能 dolphinscheduler 团队就想着将文件上传到 hdfs,暂不支持本地。需要将 resource.storage.type 置为 NONE, 因为我之前用的 1.3.6 版本的时候,即使资源文件存在本地文件也需要配置成 hdfs。_[error] 2023-10-24 18:10:43.762 +0800 org.apache.dolphinscheduler.api.servic
文章浏览阅读2.7k次,点赞2次,收藏13次。公司使用的是交老的k8s版本(1.16),由于老版本的K8s对于现在很多新特性不支持,所以需要升级到新版本。目前2023年7月11日最新版本的k8s是v1.27.3。通过参考官方文档进行k8s部署工作。其中涉及到操作系统配置、防火墙配置、私有镜像仓库等。_k8s最新版本
文章浏览阅读1.8w次,点赞14次,收藏27次。能节省你在kubeadm init 时遇到问题的排错时间⌚️。整合了网上大佬
文章浏览阅读1.1k次,点赞2次,收藏7次。具体操作步骤可以参考之前的教程,建议是先安装一台,然后克隆虚拟机,这样速度快。注意:在克隆时记得修改Mac地址、IP地址、UUID和主机名。(最后别忘了保存下快照~)_部署k8s集群
文章浏览阅读863次,点赞23次,收藏16次。当部署完 Kubernetes,便拥有了一个完整的集群。一组工作机器,称为节点, 会运行容器化应用程序。每个集群至少有一个工作节点。工作节点会 托管Pod ,而 Pod 就是作为应用负载的组件。控制平面管理集群中的工作节点和Pod。说人话版本:集群:cluster,多个几点被组织到一起共同为系统提供服务过程称之为集群。本质上是将承载同一个软件服务节点组织到一起,称之为该软件(服务)的集群,当然集群中的节点身份地位是不一样的。k8s集群也是如此,他也是多个节点组成。
文章浏览阅读943次。Rancher是一个开源的企业级多集群Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理,以确保集群的安全性,加速企业数字化转型。Rancher 1.0版本在2016年就已发布,时至今日,Rancher已经成长为企业在生产环境中运行容器和Kubernetes的首要选择。_rancher管理k8s
文章浏览阅读742次,点赞2次,收藏3次。本篇来讲解如何在centos下安装部署高可用k8s集群。_kubeadm ha keepalived + nginx
文章浏览阅读1.9k次,点赞21次,收藏25次。那么这个空间设置成内存的2倍大小。点击IPv4设置--手动--添加--设置ip--设置DNS服务器,最后点击--“保存”;首先选中--“本地标准磁盘”,存储配置--自定义分区,点击--“完成”;在--主机名--设置主机名:(例如k8s-master01),点击--点击+,设置--挂载点/boot--期望容量,点击--添加挂载点;点击--+--挂载点swap--期望容量,点击--“添加挂载点”;默认选择--亚洲--上海,并调整日期和时间,点击--“完成”;设备类型--确认--LVM,卷组--选择“修改”;_euler 服务器搭建
文章浏览阅读1k次。在1.25版本的k8s集群中部署gpu-manage时,虽然显示gpu节点上gpu-manage的pod实例都是running状态,但是给pod申领。既可以用源码的Makefile自动编译打包成新的镜像,但是源码的。说明gpu-manager和容器运行时接口通信失败了。编译后的镜像在1.25版本的k8s中可以正常使用。,但是在k8s1.23版本之后,接口路径已经改为。资源时,却始终找不到有资源的节点。,另外有一些依赖需要国际上的支持。可以看到这里用的运行时接口是。查看节点的详情时,返回的。_launch gpu manager 报错 can't create container runtime manager: context dead
文章浏览阅读1k次,点赞18次,收藏16次。SelfLink:API的资源对象之一,表示资源对象在集群当中自身的一个连结,self-Link是一个唯一的标识号,可以用于标识k8s集群当中的每个资源的对象。容器里使用的配置,在provisioner当中定义好环境变量,传给容器,storageclass的名称,NFS服务器的地址,NFS的目录。NFS的provisionner的客户端以pod的方式运行在集群当中,监听k8s集群当中PV的请求,然后动态的创建于NFS相关的PV。命名为 nfs-client-provisioner-clusterrole。
文章浏览阅读6.3k次,点赞2次,收藏20次。k8s证书过期解决方案之替换证书_k8s证书过期如何更换
文章浏览阅读1k次。KMS,Key Management Service,即密钥管理服务,在K8S集群中,以驱动和插件的形式启用对Secret,Configmap进行加密。以保护敏感数据
文章浏览阅读888次。exporter对于云服务的监控还是很不完美,毕竟每家都有自己的护城河。自动发现多实例这样的借助consul 阿波罗这样的会简单一些。aws可以借助cloudwatch这样的导入模板到grafana中。还是希望能将类似腾讯云云监控中的这些指标采集到prometheus中,但是这过程应该还很遥远grafana出图 prometheus查询语法这些东西有时间的好好研究一下。报警有必要进行分级别,收敛配置一下!_command: - "-redis.password-file=/redis_passwd.json
文章浏览阅读1k次。可以在此处(https://cloud.google.com/kubernetes-engine/docs/how-to/kube-dns)和此处(https://www.digitalocean.com/community/tutorials/an-introduction-to-the-kubernetes-dns-service)找到更多的详细信息。-or-ipvs/)和此处(https://arthurchiao.art/blog/cracking-k8s-node-proxy/)。_k8s默认命名空间
文章浏览阅读4.9k次,点赞11次,收藏32次。如果运行runc命令时提示:runc: error while loading shared libraries: libseccomp.so.2: cannot open shared object file: No such file or directory,则表明runc没有找到libseccomp,需要检查libseccomp是否安装,本次安装默认就可以查询到。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。_kubernetes 1.28
文章浏览阅读3.6w次,点赞118次,收藏144次。Canal 提供了网络功能,使得 Kubernetes 集群中的 Pod 可以相互通信,并与集群外部的服务进行通信。它通过网络插件的方式,为每个 Pod 分配唯一的 IP 地址,并管理网络流量的路由和转发。此外,Canal 还支持网络策略,用于定义 Pod 之间的通信规则和安全策略。Canal 基于 Calico 和 Flannel 项目,结合了二者的优点。它使用 Calico 的数据平面,提供高性能的网络转发和安全特性,同时使用 Flannel 的控制平面,实现 IP 地址管理和网络策略的配置。_k8s canal