深圳网站建设 site快速建手机网站

pingmian/2026/1/21 23:21:53/文章来源:
深圳网站建设 site,快速建手机网站,wordpress博客数据库,腾讯企业邮箱免费写在前面 博文内容为K8s 镜像缓存管理 kube-fledged 认知内容涉及#xff1a; kube-fledged 简单介绍部署以及基本使用 理解不足小伙伴帮忙指正 不必太纠结于当下#xff0c;也不必太忧虑未来#xff0c;当你经历过一些事情的时候#xff0c;眼前的风景已经和从前不一样了。…写在前面 博文内容为K8s 镜像缓存管理 kube-fledged 认知内容涉及 kube-fledged 简单介绍部署以及基本使用 理解不足小伙伴帮忙指正 不必太纠结于当下也不必太忧虑未来当你经历过一些事情的时候眼前的风景已经和从前不一样了。——村上春树 简单介绍 我们知道 k8s 上的容器调度需要在调度的节点行拉取当前容器的镜像在一些特殊场景中 需要快速启动和/或扩展的应用程序。例如由于数据量激增执行实时数据处理的应用程序需要快速扩展。镜像比较庞大涉及多个版本节点存储有限需要动态清理不需要的镜像无服务器函数通常需要在几分之一秒内立即对传入事件和启动容器做出反应。在边缘设备上运行的 IoT 应用程序需要容忍边缘设备和镜像镜像仓库之间的间歇性网络连接。如果需要从专用仓库中拉取镜像并且无法授予每个人从此镜像仓库拉取镜像的访问权限则可以在群集的节点上提供镜像。如果集群管理员或操作员需要对应用程序进行升级并希望事先验证是否可以成功拉取新镜像。 kube-fledged 是一个 kubernetes operator用于直接在 Kubernetes 集群的 worker 节点上创建和管理容器镜像缓存。它允许用户定义镜像列表以及这些镜像应缓存到哪些工作节点上即拉取。因此应用程序 Pod 几乎可以立即启动因为不需要从镜像仓库中提取镜像。 kube-fledged 提供了 CRUD API 来管理镜像缓存的生命周期并支持多个可配置的参数可以根据自己的需要自定义功能。 Kubernetes 具有内置的镜像垃圾回收机制。节点中的 kubelet 会定期检查磁盘使用率是否达到特定阈值可通过标志进行配置。一旦达到这个阈值kubelet 会自动删除节点中所有未使用的镜像。 需要在建议的解决方案中实现自动和定期刷新机制。如果镜像缓存中的镜像被 kubelet 的 gc 删除下一个刷新周期会将已删除的镜像拉入镜像缓存中。这可确保镜像缓存是最新的。 设计流程 https://github.com/senthilrch/kube-fledged/blob/master/docs/kubefledged-architecture.png 部署 kube-fledged Helm 方式部署 ──[rootvms100.liruilongs.github.io]-[~/ansible] └─$mkdir kube-fledged ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$cd kube-fledged ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged] └─$export KUBEFLEDGED_NAMESPACEkube-fledged ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged] └─$kubectl create namespace ${KUBEFLEDGED_NAMESPACE} namespace/kube-fledged created ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged] └─$helm repo add kubefledged-charts https://senthilrch.github.io/kubefledged-charts/ kubefledged-charts has been added to your repositories ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged] └─$helm repo update Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the kubefledged-charts chart repository ...Successfully got an update from the kubescape chart repository ...Successfully got an update from the rancher-stable chart repository ...Successfully got an update from the skm chart repository ...Successfully got an update from the openkruise chart repository ...Successfully got an update from the awx-operator chart repository ...Successfully got an update from the botkube chart repository Update Complete. ⎈Happy Helming!⎈┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged] └─$helm install --verify kube-fledged kubefledged-charts/kube-fledged -n ${KUBEFLEDGED_NAMESPACE} --wait实际部署中发现由于网络问题chart 无法下载所以通过 make deploy-using-yaml 使用 yaml 方式部署 Yaml 文件部署 ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged] └─$git clone https://github.com/senthilrch/kube-fledged.git 正克隆到 kube-fledged... remote: Enumerating objects: 10613, done. remote: Counting objects: 100% (1501/1501), done. remote: Compressing objects: 100% (629/629), done. remote: Total 10613 (delta 845), reused 1357 (delta 766), pack-reused 9112 接收对象中: 100% (10613/10613), 34.58 MiB | 7.33 MiB/s, done. 处理 delta 中: 100% (4431/4431), done. ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged] └─$ls kube-fledged ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged] └─$cd kube-fledged/ ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged] └─$make deploy-using-yaml kubectl apply -f deploy/kubefledged-namespace.yaml第一次部署发现镜像拉不下来 ┌──[rootvms100.liruilongs.github.io]-[~] └─$kubectl get all -n kube-fledged NAME READY STATUS RESTARTS AGE pod/kube-fledged-controller-df69f6565-drrqg 0/1 CrashLoopBackOff 35 (5h59m ago) 21h pod/kube-fledged-webhook-server-7bcd589bc4-b7kg2 0/1 Init:CrashLoopBackOff 35 (5h58m ago) 21h pod/kubefledged-controller-55f848cc67-7f4rl 1/1 Running 0 21h pod/kubefledged-webhook-server-597dbf4ff5-l8fbh 0/1 Init:CrashLoopBackOff 34 (6h ago) 21hNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kube-fledged-webhook-server ClusterIP 10.100.194.199 none 3443/TCP 21h service/kubefledged-webhook-server ClusterIP 10.101.191.206 none 3443/TCP 21hNAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/kube-fledged-controller 0/1 1 0 21h deployment.apps/kube-fledged-webhook-server 0/1 1 0 21h deployment.apps/kubefledged-controller 0/1 1 0 21h deployment.apps/kubefledged-webhook-server 0/1 1 0 21hNAME DESIRED CURRENT READY AGE replicaset.apps/kube-fledged-controller-df69f6565 1 1 0 21h replicaset.apps/kube-fledged-webhook-server-7bcd589bc4 1 1 0 21h replicaset.apps/kubefledged-controller-55f848cc67 1 1 0 21h replicaset.apps/kubefledged-webhook-server-597dbf4ff5 1 1 0 21h ┌──[rootvms100.liruilongs.github.io]-[~] └─$这里我们找一下要拉取的镜像 ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$cat *.yaml | grep image:- image: senthilrch/kubefledged-controller:v0.10.0- image: senthilrch/kubefledged-webhook-server:v0.10.0- image: senthilrch/kubefledged-webhook-server:v0.10.0单独拉取一些当前使用 ansible 在所有工作节点批量操作 ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$ansible k8s_node -m shell -a docker pull docker.io/senthilrch/kubefledged-cri-client:v0.10.0 -i host.yaml其他相关的镜像都拉取一下 操作完成之后容器状态全部正常 ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$kubectl -n kube-fledged get all NAME READY STATUS RESTARTS AGE pod/kube-fledged-controller-df69f6565-wdb4g 1/1 Running 0 13h pod/kube-fledged-webhook-server-7bcd589bc4-j8xxp 1/1 Running 0 13h pod/kubefledged-controller-55f848cc67-klxlm 1/1 Running 0 13h pod/kubefledged-webhook-server-597dbf4ff5-ktbsh 1/1 Running 0 13hNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kube-fledged-webhook-server ClusterIP 10.100.194.199 none 3443/TCP 36h service/kubefledged-webhook-server ClusterIP 10.101.191.206 none 3443/TCP 36hNAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/kube-fledged-controller 1/1 1 1 36h deployment.apps/kube-fledged-webhook-server 1/1 1 1 36h deployment.apps/kubefledged-controller 1/1 1 1 36h deployment.apps/kubefledged-webhook-server 1/1 1 1 36hNAME DESIRED CURRENT READY AGE replicaset.apps/kube-fledged-controller-df69f6565 1 1 1 36h replicaset.apps/kube-fledged-webhook-server-7bcd589bc4 1 1 1 36h replicaset.apps/kubefledged-controller-55f848cc67 1 1 1 36h replicaset.apps/kubefledged-webhook-server-597dbf4ff5 1 1 1 36h验证是否安装成功 ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged] └─$kubectl get pods -n kube-fledged -l appkubefledged NAME READY STATUS RESTARTS AGE kubefledged-controller-55f848cc67-klxlm 1/1 Running 0 16h kubefledged-webhook-server-597dbf4ff5-ktbsh 1/1 Running 0 16h ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged] └─$kubectl get imagecaches -n kube-fledged No resources found in kube-fledged namespace.使用 kubefledged 创建镜像缓存对象 根据 Demo 文件创建镜像缓存对象 ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged] └─$cd deploy/ ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$cat kubefledged-imagecache.yaml --- apiVersion: kubefledged.io/v1alpha2 kind: ImageCache metadata:# Name of the image cache. A cluster can have multiple image cache objectsname: imagecache1namespace: kube-fledged# The kubernetes namespace to be used for this image cache. You can choose a different namepace as per your preferencelabels:app: kubefledgedkubefledged: imagecache spec:# The cacheSpec field allows a user to define a list of images and onto which worker nodes those images should be cached (i.e. pre-pulled).cacheSpec:# Specifies a list of images (nginx:1.23.1) with no node selector, hence these images will be cached in all the nodes in the cluster- images:- ghcr.io/jitesoft/nginx:1.23.1# Specifies a list of images (cassandra:v7 and etcd:3.5.4-0) with a node selector, hence these images will be cached only on the nodes selected by the node selector- images:- us.gcr.io/k8s-artifacts-prod/cassandra:v7- us.gcr.io/k8s-artifacts-prod/etcd:3.5.4-0nodeSelector:tier: backend# Specifies a list of image pull secrets to pull images from private repositories into the cacheimagePullSecrets:- name: myregistrykey官方的 Demo 中对应的 镜像拉取不下来所以换一下 ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$docker pull us.gcr.io/k8s-artifacts-prod/cassandra:v7 Error response from daemon: Get https://us.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$为了测试选择器标签的使用,我们找一个节点的标签单独做镜像缓存 ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$kubectl get nodes --show-labels同时我们直接从公有仓库拉取镜像所以不需要 imagePullSecrets 对象 ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$vim kubefledged-imagecache.yaml修改后的 yaml 文件 添加了一个所有节点的 liruilong/my-busybox:latest 镜像缓存添加了一个 kubernetes.io/hostname: vms105.liruilongs.github.io 对应标签选择器的 liruilong/hikvision-sdk-config-ftp:latest 镜像缓存 ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$cat kubefledged-imagecache.yaml --- apiVersion: kubefledged.io/v1alpha2 kind: ImageCache metadata:# Name of the image cache. A cluster can have multiple image cache objectsname: imagecache1namespace: kube-fledged# The kubernetes namespace to be used for this image cache. You can choose a different namepace as per your preferencelabels:app: kubefledgedkubefledged: imagecache spec:# The cacheSpec field allows a user to define a list of images and onto which worker nodes those images should be cached (i.e. pre-pulled).cacheSpec:# Specifies a list of images (nginx:1.23.1) with no node selector, hence these images will be cached in all the nodes in the cluster- images:- liruilong/my-busybox:latest# Specifies a list of images (cassandra:v7 and etcd:3.5.4-0) with a node selector, hence these images will be cached only on the nodes selected by the node selector- images:- liruilong/hikvision-sdk-config-ftp:latestnodeSelector:kubernetes.io/hostname: vms105.liruilongs.github.io# Specifies a list of image pull secrets to pull images from private repositories into the cache#imagePullSecrets:#- name: myregistrykey ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$直接创建报错了 ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$kubectl create -f kubefledged-imagecache.yaml Error from server (InternalError): error when creating kubefledged-imagecache.yaml: Internal error occurred: failed calling webhook validate-image-cache.kubefledged.io: failed to call webhook: Post https://kubefledged-webhook-server.kube-fledged.svc:3443/validate-image-cache?timeout1s: x509: certificate signed by unknown authority (possibly because of crypto/rsa: verification error while trying to verify candidate authority certificate kubefledged.io) ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$kubectl get imagecaches -n kube-fledged No resources found in kube-fledged namespace. ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$解决办法删除对应的对象重新创建 我在当前项目的一个 issues 下面找到了解决办法 https://github.com/senthilrch/kube-fledged/issues/76 看起来这是因为 Webhook CA 是硬编码的但是当 webhook 服务器启动时会生成一个新的 CA 捆绑包并更新 webhook 配置。当发生另一个部署时将重新应用原始 CA 捆绑包并且 Webhook 请求开始失败直到再次重新启动 Webhook 组件以修补捆绑包init-server ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged] └─$make remove-kubefledged-and-operator # Remove kubefledged kubectl delete -f deploy/kubefledged-operator/deploy/crds/charts.helm.kubefledged.io_v1alpha2_kubefledged_cr.yaml error: resource mapping not found for name: kube-fledged namespace: kube-fledged from deploy/kubefledged-operator/deploy/crds/charts.helm.kubefledged.io_v1alpha2_kubefledged_cr.yaml: no matches for kind KubeFledged in version charts.helm.kubefledged.io/v1alpha2 ensure CRDs are installed first┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged] └─$make deploy-using-yaml kubectl apply -f deploy/kubefledged-namespace.yaml namespace/kube-fledged created kubectl apply -f deploy/kubefledged-crd.yaml customresourcedefinition.apiextensions.k8s.io/imagecaches.kubefledged.io unchanged .................... kubectl rollout status deployment kubefledged-webhook-server -n kube-fledged --watch Waiting for deployment kubefledged-webhook-server rollout to finish: 0 of 1 updated replicas are available... deployment kubefledged-webhook-server successfully rolled out kubectl get pods -n kube-fledged NAME READY STATUS RESTARTS AGE kubefledged-controller-55f848cc67-76c4v 1/1 Running 0 112s kubefledged-webhook-server-597dbf4ff5-56h6z 1/1 Running 0 66s重新创建缓存对象创建成功 ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$kubectl create -f kubefledged-imagecache.yaml imagecache.kubefledged.io/imagecache1 created ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$kubectl get imagecaches -n kube-fledged NAME AGE imagecache1 10s ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$查看当前被纳管的镜像缓存 ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged] └─$kubectl get imagecaches imagecache1 -n kube-fledged -o json {apiVersion: kubefledged.io/v1alpha2,kind: ImageCache,metadata: {creationTimestamp: 2024-03-01T15:08:42Z,generation: 83,labels: {app: kubefledged,kubefledged: imagecache},name: imagecache1,namespace: kube-fledged,resourceVersion: 20169836,uid: 3a680a57-d8ab-444f-b9c9-4382459c5c72},spec: {cacheSpec: [{images: [liruilong/my-busybox:latest]},{images: [liruilong/hikvision-sdk-config-ftp:latest],nodeSelector: {kubernetes.io/hostname: vms105.liruilongs.github.io}}]},status: {completionTime: 2024-03-02T01:06:47Z,message: All requested images pulled succesfully to respective nodes,reason: ImageCacheRefresh,startTime: 2024-03-02T01:05:33Z,status: Succeeded} } ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged] └─$通过 ansible 来验证 ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$ansible all -m shell -a docker images | grep liruilong/my-busybox -i host.yaml 192.168.26.102 | CHANGED | rc0 liruilong/my-busybox latest 497b83a63aad 11 months ago 1.24MB 192.168.26.101 | CHANGED | rc0 liruilong/my-busybox latest 497b83a63aad 11 months ago 1.24MB 192.168.26.103 | CHANGED | rc0 liruilong/my-busybox latest 497b83a63aad 11 months ago 1.24MB 192.168.26.105 | CHANGED | rc0 liruilong/my-busybox latest 497b83a63aad 11 months ago 1.24MB 192.168.26.100 | CHANGED | rc0 liruilong/my-busybox latest 497b83a63aad 11 months ago 1.24MB 192.168.26.106 | CHANGED | rc0 liruilong/my-busybox latest 497b83a63aad 11 months ago 1.24MB ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$ansible all -m shell -a docker images | grep liruilong/hikvision-sdk-config-ftp -i host.yaml 192.168.26.102 | FAILED | rc1 non-zero return code 192.168.26.100 | FAILED | rc1 non-zero return code 192.168.26.103 | FAILED | rc1 non-zero return code 192.168.26.105 | CHANGED | rc0 liruilong/hikvision-sdk-config-ftp latest a02cd03b4342 4 months ago 830MB 192.168.26.101 | FAILED | rc1 non-zero return code 192.168.26.106 | FAILED | rc1 non-zero return code ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$开启自动刷新 ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$kubectl annotate imagecaches imagecache1 -n kube-fledged kubefledged.io/refresh-imagecache imagecache.kubefledged.io/imagecache1 annotated ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$添加镜像缓存 添加一个新的镜像缓存 ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$kubectl get imagecaches.kubefledged.io -n kube-fledged imagecache1 -o json {apiVersion: kubefledged.io/v1alpha2,kind: ImageCache,metadata: {creationTimestamp: 2024-03-01T15:08:42Z,generation: 92,labels: {app: kubefledged,kubefledged: imagecache},name: imagecache1,namespace: kube-fledged,resourceVersion: 20175233,uid: 3a680a57-d8ab-444f-b9c9-4382459c5c72},spec: {cacheSpec: [{images: [liruilong/my-busybox:latest,liruilong/jdk1.8_191:latest]},{images: [liruilong/hikvision-sdk-config-ftp:latest],nodeSelector: {kubernetes.io/hostname: vms105.liruilongs.github.io}}]},status: {completionTime: 2024-03-02T01:43:32Z,message: All requested images pulled succesfully to respective nodes,reason: ImageCacheUpdate,startTime: 2024-03-02T01:40:34Z,status: Succeeded} } ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$通过 ansible 确认 ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$ansible all -m shell -a docker images | grep liruilong/jdk1.8_191 -i host.yaml 192.168.26.101 | FAILED | rc1 non-zero return code 192.168.26.100 | FAILED | rc1 non-zero return code 192.168.26.102 | FAILED | rc1 non-zero return code 192.168.26.103 | FAILED | rc1 non-zero return code 192.168.26.105 | FAILED | rc1 non-zero return code 192.168.26.106 | FAILED | rc1 non-zero return code ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$ansible all -m shell -a docker images | grep liruilong/jdk1.8_191 -i host.yaml 192.168.26.101 | CHANGED | rc0 liruilong/jdk1.8_191 latest 17dbd4002a8c 5 years ago 170MB 192.168.26.102 | CHANGED | rc0 liruilong/jdk1.8_191 latest 17dbd4002a8c 5 years ago 170MB 192.168.26.100 | CHANGED | rc0 liruilong/jdk1.8_191 latest 17dbd4002a8c 5 years ago 170MB 192.168.26.103 | CHANGED | rc0 liruilong/jdk1.8_191 latest 17dbd4002a8c 5 years ago 170MB 192.168.26.105 | CHANGED | rc0 liruilong/jdk1.8_191 latest 17dbd4002a8c 5 years ago 170MB 192.168.26.106 | CHANGED | rc0 liruilong/jdk1.8_191 latest 17dbd4002a8c 5 years ago 170MB ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$删除镜像缓存 ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$kubectl edit imagecaches imagecache1 -n kube-fledged imagecache.kubefledged.io/imagecache1 edited ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$kubectl get imagecaches.kubefledged.io -n kube-fledged imagecache1 -o json {apiVersion: kubefledged.io/v1alpha2,kind: ImageCache,metadata: {creationTimestamp: 2024-03-01T15:08:42Z,generation: 94,labels: {app: kubefledged,kubefledged: imagecache},name: imagecache1,namespace: kube-fledged,resourceVersion: 20175766,uid: 3a680a57-d8ab-444f-b9c9-4382459c5c72},spec: {cacheSpec: [{images: [liruilong/jdk1.8_191:latest]},{images: [liruilong/hikvision-sdk-config-ftp:latest],nodeSelector: {kubernetes.io/hostname: vms105.liruilongs.github.io}}]},status: {message: Image cache is being updated. Please view the status after some time,reason: ImageCacheUpdate,startTime: 2024-03-02T01:48:03Z,status: Processing} }通过 Ansible 确认可以看到无论是 mastere 上的节点还是 work 的节点对应的镜像缓存都被清理 ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$ansible all -m shell -a docker images | grep liruilong/my-busybox -i host.yaml 192.168.26.102 | CHANGED | rc0 liruilong/my-busybox latest 497b83a63aad 11 months ago 1.24MB 192.168.26.101 | CHANGED | rc0 liruilong/my-busybox latest 497b83a63aad 11 months ago 1.24MB 192.168.26.105 | FAILED | rc1 non-zero return code 192.168.26.100 | CHANGED | rc0 liruilong/my-busybox latest 497b83a63aad 11 months ago 1.24MB 192.168.26.103 | FAILED | rc1 non-zero return code 192.168.26.106 | FAILED | rc1 non-zero return code ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$ansible all -m shell -a docker images | grep liruilong/my-busybox -i host.yaml 192.168.26.105 | FAILED | rc1 non-zero return code 192.168.26.102 | FAILED | rc1 non-zero return code 192.168.26.103 | FAILED | rc1 non-zero return code 192.168.26.101 | FAILED | rc1 non-zero return code 192.168.26.100 | FAILED | rc1 non-zero return code 192.168.26.106 | FAILED | rc1 non-zero return code ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$这里需要注意如果清除所有的镜像缓存那么需要把 images 下的数组 写成 “”. ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$kubectl edit imagecaches imagecache1 -n kube-fledged imagecache.kubefledged.io/imagecache1 edited ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$ansible all -m shell -a docker images | grep liruilong/jdk1.8_191 -i host.yaml 192.168.26.102 | FAILED | rc1 non-zero return code 192.168.26.101 | FAILED | rc1 non-zero return code 192.168.26.100 | FAILED | rc1 non-zero return code 192.168.26.105 | FAILED | rc1 non-zero return code 192.168.26.103 | FAILED | rc1 non-zero return code 192.168.26.106 | FAILED | rc1 non-zero return code ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$kubectl get imagecaches.kubefledged.io -n kube-fledged imagecache1 -o json {apiVersion: kubefledged.io/v1alpha2,kind: ImageCache,metadata: {creationTimestamp: 2024-03-01T15:08:42Z,generation: 98,labels: {app: kubefledged,kubefledged: imagecache},name: imagecache1,namespace: kube-fledged,resourceVersion: 20176849,uid: 3a680a57-d8ab-444f-b9c9-4382459c5c72},spec: {cacheSpec: [{images: []},{images: [liruilong/hikvision-sdk-config-ftp:latest],nodeSelector: {kubernetes.io/hostname: vms105.liruilongs.github.io}}]},status: {completionTime: 2024-03-02T01:52:16Z,message: All cached images succesfully deleted from respective nodes,reason: ImageCacheUpdate,startTime: 2024-03-02T01:51:47Z,status: Succeeded} } ┌──[rootvms100.liruilongs.github.io]-[~/ansible] └─$如果通过下面的方式删除直接注释调对应的标签 ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$cat kubefledged-imagecache.yaml --- apiVersion: kubefledged.io/v1alpha2 kind: ImageCache metadata:# Name of the image cache. A cluster can have multiple image cache objectsname: imagecache1namespace: kube-fledged# The kubernetes namespace to be used for this image cache. You can choose a different namepace as per your preferencelabels:app: kubefledgedkubefledged: imagecache spec:# The cacheSpec field allows a user to define a list of images and onto which worker nodes those images should be cached (i.e. pre-pulled).cacheSpec:# Specifies a list of images (nginx:1.23.1) with no node selector, hence these images will be cached in all the nodes in the cluster#- images:#- liruilong/my-busybox:latest# Specifies a list of images (cassandra:v7 and etcd:3.5.4-0) with a node selector, hence these images will be cached only on the nodes selected by the node selector- images:- liruilong/hikvision-sdk-config-ftp:latestnodeSelector:kubernetes.io/hostname: vms105.liruilongs.github.io# Specifies a list of image pull secrets to pull images from private repositories into the cache#imagePullSecrets:#- name: myregistrykey ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$那么会报下面的错 ┌──[rootvms100.liruilongs.github.io]-[~/ansible/kube-fledged/kube-fledged/deploy] └─$kubectl edit imagecaches imagecache1 -n kube-fledged error: imagecaches.kubefledged.io imagecache1 could not be patched: admission webhook validate-image-cache.kubefledged.io denied the request: Mismatch in no. of image lists You can run kubectl replace -f /tmp/kubectl-edit-4113815075.yaml to try this update again.博文部分内容参考 © 文中涉及参考链接内容版权归原作者所有如有侵权请告知,如果你认可它不要吝啬星星哦 https://github.com/senthilrch/kube-fledged © 2018-2024 liruilongergmail.com, All rights reserved. 保持署名-非商用-相同方式共享(CC BY-NC-SA 4.0)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

泸州市建设厅网站襄樊网站制作公司

最近在用socket编程,用到select函数,于是上网查找资料,如下这篇是讲的比较详细易懂的:Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 connect…

网站规划建设与管理维护智能小程序是什么

前置知识:可变参数 就是一种特殊参数,定义在方法 构造器的形参列表里,格式是:数据类型...参数名称; 可变参数的特点和好处 特点:可以不传数据给它;可以传一个或者同时传多个数据给它&#xff…

美团招聘网站开发有没有免费资源

一、异步(1)当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。比如iOS类库中的NSURLConnectioin中使用代理的方式就是异步。(2)iOS类库中的异步调用提供自动的多线程并发&#xff0…

太原市住房和城乡建设局的网站首页seo顾问服务公司

Spring Boot下无法加载主类 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 我什么也没有改,启动服务报错如题:找不到或无法加载主类 解决:什么也不…

洛阳兼职网站微信朋友圈广告在哪里做

字节码检测库cglib是许多众所周知的Java框架(例如Hibernate (现在不再 ))或Spring最受欢迎的选择,它们可以完成肮脏的工作。 字节码检测允许在Java应用程序的编译阶段之后操作或创建类。 由于Java类在运行时动态链接&a…

潍坊网站建设科技有限公司建设网站的申请信用卡吗

大家肯定为this指向的问题感到烦恼,接下来让我为大家介绍六种改变this指向的方法吧! 1、在指定位置定义this存为变量 // 在指定位置定义this存为变量// 我们可以自己存一个变量let _this thisconst obj {fun(){console.log(_this) //window}}obj.fun(…

网站怎么做下拉刷新页面数据深圳定制网站建设服务公司

vector就是我们之前数据结构学的顺序表,这篇博客就是说一说它的简单使用和底层实现 文章目录 简单使用模拟实现 简单使用 首先,我们看看它的构造函数 我们比较常用的也就是第二种,就是第一个参数是要存的数据个数,第二个是要填…

建设营销网站时以什么为导向建网站要几个域名

在当今信息化社会,公司信息的安全性和保密性显得尤为重要。一旦公司信息泄露,不仅会对公司的经营造成严重影响,还可能引发法律纠纷。因此,采取有效的措施来防止公司信息泄露是非常必要的。以下是一些具体的措施: 部署洞…

大型网站开发人员360建站官网

01安卓手机无法打开.jio文件,需要在电脑上安装久其通用数据管理平台软件打开。进入软件首页,点击菜单栏“装入”按钮,弹出“数据装入向然后导”,单击文件夹图标,在弹出“打开”窗口中选择装入数据的路径,单…

去哪里可以做网站建设网站的页面设计

由于我们的内衣、内裤和袜子等等贴身小件衣物的清洁频率比一般的衣物要高。而且,如果我们人工手洗的话,不仅会大大浪费了我们的时间,而且还不能进行对这些贴身的以为进行深层消毒和除菌。这种情况下,就得需要一台专门用于清洗内衣…

asp.net当前网站路径网站推广的案例

1 svg-pan-zoom 概述 svg-pan-zoom 是一个轻量级、高性能且易于使用的 JavaScript 库,专为增强 SVG 图像的浏览体验而设计。它提供了平移和缩放功能,使用户能够无缝探索大型或复杂的 SVG 图形。这个库允许用户对SVG图像进行交互操作,包括缩放…

山西 网站制作seo引擎搜索网站关键词

概述 本文直在说明将QString类型的变量转换为const char *类型。 实现 可以采用下面的方式来实现: QString.toStdString().c_str(); 示例 下面是一个示例: const QString msg "nis你好!"; const char * str msg.toStdStrin…

成都市温江建设局网站新建网站网络空间

文章目录 一、定义:【1】Less【2】Sass 二、相同之处:三、区别:【1】实现方式:【2】实现方式:【3】混合(Mixins):【4】解析方式:【5】变量的作用域:【6】比起Less 一、定义: 【1】Less Less 是…

网站建设干货用别人的资源做网站

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1计算最大值和最小值 4.2计算亮度L 4.3计算饱和度S 4.4计算色调H 5.算法完整程序工程 1.算法运行效果图预览 将FPGA结果导入到MATLAB显示效果: 2.算法运行软件版本 Vivado…

作风建设年活动网站html5网页设计论文

一、UI设计师 UI设计师的主要工作内容 1.什么是UI设计师 是现代的一种新兴职业,指从事对软件的人机交互、操作逻辑、界面美观的整体设计工作。 随着科技产品的日益更新和智能手机的普及,社会对软件设计类人才(UI设计师)提…

网站建设需要怎么做站长工具关键词挖掘

《计算机组成原理》试题集一、选择题在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。1.反映计算机基本功能的是( )A)操作系统 B)系统软件 C)指令系统 D)数据库系统2.若二进制数为1111.101,则…

网站建设项目分工公司在网站做广告怎么做分录

【加密相册】隐私协议 1.个人信息的收集和使用 我们的应用程序不会收集用户的个人信息,包括姓名、地址、电子邮件地址、电话号码等。我们不会追踪用户的位置信息或共享用户的个人信息。 2. 非个人化信息的收集和使用 我们的应用程序可能会收集一些非个人化信息&a…

电子商城网站开发价格辽宁建设工程信息网新平台

在近期开展的 KubeCon China 2019 上,阿里云将陆续为全球用户分享阿里巴巴超大规模云原生落地实践、云原生前沿技术与应用包括 OpenKruise 开源项目、开放云原生应用中心(Cloud Native App Hub),同时将重磅发布边缘容器、云原生应…

贵阳网站建设设计公司哪家好福州网站建设兼职

自定义一个titlebar窗口, 不带任何资源、QSS,纯代码 1. 设置主窗口 透明背景,让central_widget透明方式显示,给后续main添加dropshadow效果,用于放置实际的业务控件。 setWindowFlags(Qt::FramelessWindowHint | Qt…

替人做赌彩网站做网站赚钱 百度网盟

1.分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托…