• 周一. 6月 24th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

K8S CSI容器存储接口(一):介绍以及原理

[db:作者]

1月 4, 2022

{“type”:”doc”,”content”:[{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”link”,”attrs”:{“href”:”https://github.com/container-storage-interface/spec/blob/master/spec.md”,”title”:””},”content”:[{“type”:”text”,”text”:”容器存储接口”,”attrs”:{}}]},{“type”:”text”,”text”:”(CSI)是用于将任意块和文件存储系统暴露给诸如Kubernetes之类的容器编排系统(CO)上的容器化工作负载的标准。 使用CSI的第三方存储提供商可以编写和部署在Kubernetes中公开新存储系统的插件,而无需接触核心的Kubernetes代码。”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:”具体来说,Kubernetes针对CSI规定了以下内容:”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”bulletedlist”,”content”:[{“type”:”listitem”,”content”:[{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:”Kubelet到CSI驱动程序的通信”,”attrs”:{}}]}],”attrs”:{}}],”attrs”:{}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” – Kubelet通过Unix域套接字直接向CSI驱动程序发起CSI调用(例如”,”attrs”:{}},{“type”:”codeinline”,”content”:[{“type”:”text”,”text”:”NodeStageVolume”,”attrs”:{}}],”attrs”:{}},{“type”:”text”,”text”:”,”,”attrs”:{}},{“type”:”codeinline”,”content”:[{“type”:”text”,”text”:”NodePublishVolume”,”attrs”:{}}],”attrs”:{}},{“type”:”text”,”text”:”等),以挂载和卸载卷。”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” – Kubelet通过kubelet插件注册机制发现CSI驱动程序(以及用于与CSI驱动程序进行交互的Unix域套接字)。”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” – 因此,部署在Kubernetes上的所有CSI驱动程序”,”attrs”:{}},{“type”:”text”,”marks”:[{“type”:”strong”,”attrs”:{}}],”text”:”必须”,”attrs”:{}},{“type”:”text”,”text”:”在每个受支持的节点上使用kubelet插件注册机制进行注册。”,”attrs”:{}}]},{“type”:”bulletedlist”,”content”:[{“type”:”listitem”,”content”:[{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:”Master到CSI驱动程序的通信”,”attrs”:{}}]}],”attrs”:{}}],”attrs”:{}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” – Kubernetes master组件不会直接(通过Unix域套接字或其他方式)与CSI驱动程序通信。”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” – Kubernetes master组件仅与Kubernetes API交互。”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” – 因此,需要依赖于Kubernetes API的操作的CSI驱动程序(例如卷创建,卷attach,卷快照等)必须监听Kubernetes API并针对它触发适当的CSI操作(例如下面的一系列的external组件)。”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”heading”,”attrs”:{“align”:null,”level”:2},”content”:[{“type”:”text”,”text”:”组件”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”image”,”attrs”:{“src”:”https://static001.geekbang.org/infoq/8b/8b17561f8acee239cbc14a416396280b.png”,”alt”:”CSI调用说明”,”title”:null,”style”:null,”href”:null,”fromPaste”:true,”pastePass”:true}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:”CSI实现中的组件分为两部分:”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”bulletedlist”,”content”:[{“type”:”listitem”,”content”:[{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:”由k8s官方维护的一系列external组件负责注册CSI driver 或监听k8s对象资源,从而发起csi driver调用,比如(node-driver-registrar,external-attacher,external-provisioner,external-resizer,external-snapshotter,livenessprobe)”,”attrs”:{}}]}],”attrs”:{}},{“type”:”listitem”,”content”:[{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:”各云厂商or开发者自行开发的组件(需要实现CSI Identity,CSI Controller,CSI Node 接口)”,”attrs”:{}}]}],”attrs”:{}}],”attrs”:{}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”heading”,”attrs”:{“align”:null,”level”:3},”content”:[{“type”:”text”,”text”:”RPC接口(开发商实现)”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”marks”:[{“type”:”strong”,”attrs”:{}}],”text”:”Identity Service”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”codeblock”,”attrs”:{“lang”:”go”},”content”:[{“type”:”text”,”text”:”service Identity {\n //返回driver的信息,比如名字,版本\n rpc GetPluginInfo(GetPluginInfoRequest)\n returns (GetPluginInfoResponse) {}\n //返回driver提供的能力,比如是否提供Controller Service,volume 访问能能力\n rpc GetPluginCapabilities(GetPluginCapabilitiesRequest)\n returns (GetPluginCapabilitiesResponse) {}\n //探针\n rpc Probe (ProbeRequest)\n returns (ProbeResponse) {}\n}”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”marks”:[{“type”:”strong”,”attrs”:{}}],”text”:”Controller service”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”codeblock”,”attrs”:{“lang”:”go”},”content”:[{“type”:”text”,”text”:”service Controller {\n //创建卷\n rpc CreateVolume (CreateVolumeRequest)\n returns (CreateVolumeResponse) {}\n //删除卷\n rpc DeleteVolume (DeleteVolumeRequest)\n returns (DeleteVolumeResponse) {}\n //attach 卷\n rpc ControllerPublishVolume (ControllerPublishVolumeRequest)\n returns (ControllerPublishVolumeResponse) {}\n //unattach卷\n rpc ControllerUnpublishVolume (ControllerUnpublishVolumeRequest)\n returns (ControllerUnpublishVolumeResponse) {}\n //返回存储卷的功能点,如是否支持挂载到多个节点上,是否支持多个节点同时读写\n rpc ValidateVolumeCapabilities (ValidateVolumeCapabilitiesRequest)\n returns (ValidateVolumeCapabilitiesResponse) {}\n //列出所有卷\n rpc ListVolumes (ListVolumesRequest)\n returns (ListVolumesResponse) {}\n //返回存储资源池的可用空间大小\n rpc GetCapacity (GetCapacityRequest)\n returns (GetCapacityResponse) {}\n //返回controller插件的功能点,如是否支持GetCapacity接口,是否支持snapshot功能等\n rpc ControllerGetCapabilities (ControllerGetCapabilitiesRequest)\n returns (ControllerGetCapabilitiesResponse) {}\n //创建快照\n rpc CreateSnapshot (CreateSnapshotRequest)\n returns (CreateSnapshotResponse) {}\n //删除快照\n rpc DeleteSnapshot (DeleteSnapshotRequest)\n returns (DeleteSnapshotResponse) {}\n //列出快照\n rpc ListSnapshots (ListSnapshotsRequest)\n returns (ListSnapshotsResponse) {}\n //扩容\n rpc ControllerExpandVolume (ControllerExpandVolumeRequest)\n returns (ControllerExpandVolumeResponse) {}\n //获得卷\n rpc ControllerGetVolume (ControllerGetVolumeRequest)\n returns (ControllerGetVolumeResponse) {\n option (alpha_method) = true;\n }\n}”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”marks”:[{“type”:”strong”,”attrs”:{}}],”text”:”Node Service”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”codeblock”,”attrs”:{“lang”:”go”},”content”:[{“type”:”text”,”text”:”service Node {\n //如果存储卷没有格式化,首先要格式化。然后把存储卷mount到一个临时的目录(这个目录通常是节点上的一个全局目录)。再通过NodePublishVolume将存储卷mount到pod的目录中。mount过程分为2步,原因是为了支持多个pod共享同一个volume(如NFS)。\n rpc NodeStageVolume (NodeStageVolumeRequest)\n returns (NodeStageVolumeResponse) {}\n //NodeStageVolume的逆操作,将一个存储卷从临时目录umount掉\n rpc NodeUnstageVolume (NodeUnstageVolumeRequest)\n returns (NodeUnstageVolumeResponse) {}\n //将存储卷从临时目录mount到目标目录(pod目录)\n rpc NodePublishVolume (NodePublishVolumeRequest)\n returns (NodePublishVolumeResponse) {}\n //将存储卷从pod目录umount掉\n rpc NodeUnpublishVolume (NodeUnpublishVolumeRequest)\n returns (NodeUnpublishVolumeResponse) {}\n //返回可用于该卷的卷容量统计信息。\n rpc NodeGetVolumeStats (NodeGetVolumeStatsRequest)\n returns (NodeGetVolumeStatsResponse) {}\n\n //noe上执行卷扩容\n rpc NodeExpandVolume(NodeExpandVolumeRequest)\n returns (NodeExpandVolumeResponse) {}\n\n //返回Node插件的功能点,如是否支持stage/unstage功能\n rpc NodeGetCapabilities (NodeGetCapabilitiesRequest)\n returns (NodeGetCapabilitiesResponse) {}\n //返回节点信息\n rpc NodeGetInfo (NodeGetInfoRequest)\n returns (NodeGetInfoResponse) {}\n}”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”heading”,”attrs”:{“align”:null,”level”:3},”content”:[{“type”:”text”,”text”:”External 组件(k8s Team)”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:”这部分组件是由k8s官方提供的,作为k8s api跟csi driver的桥梁:”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”bulletedlist”,”content”:[{“type”:”listitem”,”content”:[{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”marks”:[{“type”:”strong”,”attrs”:{}}],”text”:”node-driver-registrar”,”attrs”:{}}]}],”attrs”:{}}],”attrs”:{}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” CSI node-driver-registrar是一个sidecar容器,可从CSI driver获取驱动程序信息(使用NodeGetInfo),并使用kubelet插件注册机制在该节点上的kubelet中对其进行注册。”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”bulletedlist”,”content”:[{“type”:”listitem”,”content”:[{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”marks”:[{“type”:”strong”,”attrs”:{}}],”text”:”external-attacher”,”attrs”:{}}]}],”attrs”:{}}],”attrs”:{}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” 它是一个sidecar容器,用于监视Kubernetes VolumeAttachment对象并针对驱动程序端点触发CSI ControllerPublish和ControllerUnpublish操作”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”bulletedlist”,”content”:[{“type”:”listitem”,”content”:[{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”marks”:[{“type”:”strong”,”attrs”:{}}],”text”:”external-provisioner”,”attrs”:{}}]}],”attrs”:{}}],”attrs”:{}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” 它是一个sidecar容器,用于监视Kubernetes PersistentVolumeClaim对象并针对驱动程序端点触发CSI CreateVolume和DeleteVolume操作。”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” external-attacher还支持快照数据源。 如果将快照CRD资源指定为PVC对象上的数据源,则此sidecar容器通过获取SnapshotContent对象获取有关快照的信息,并填充数据源字段,该字段向存储系统指示应使用指定的快照填充新卷 。”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”bulletedlist”,”content”:[{“type”:”listitem”,”content”:[{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”marks”:[{“type”:”strong”,”attrs”:{}}],”text”:”external-resizer”,”attrs”:{}}]}],”attrs”:{}}],”attrs”:{}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” 它是一个sidecar容器,用于监视Kubernetes API服务器上的PersistentVolumeClaim对象的改动,如果用户请求在PersistentVolumeClaim对象上请求更多存储,则会针对CSI端点触发ControllerExpandVolume操作。”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”bulletedlist”,”content”:[{“type”:”listitem”,”content”:[{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”marks”:[{“type”:”strong”,”attrs”:{}}],”text”:”external-snapshotter”,”attrs”:{}}]}],”attrs”:{}}],”attrs”:{}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” 它是一个sidecar容器,用于监视Kubernetes API服务器上的VolumeSnapshot和VolumeSnapshotContent CRD对象。创建新的VolumeSnapshot对象(引用与此驱动程序对应的SnapshotClass CRD对象)将导致sidecar容器提供新的快照。”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” 该Sidecar侦听指示成功创建VolumeSnapshot的服务,并立即创建VolumeSnapshotContent资源。”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”bulletedlist”,”content”:[{“type”:”listitem”,”content”:[{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”marks”:[{“type”:”strong”,”attrs”:{}}],”text”:”livenessprobe”,”attrs”:{}}]}],”attrs”:{}}],”attrs”:{}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” 它是一个sidecar容器,用于监视CSI驱动程序的运行状况,并通过”,”attrs”:{}},{“type”:”link”,”attrs”:{“href”:”https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/”,”title”:””},”content”:[{“type”:”text”,”text”:”Liveness Probe机制”,”attrs”:{}}]},{“type”:”text”,”text”:”将其报告给Kubernetes。 这使Kubernetes能够自动检测驱动程序问题并重新启动Pod以尝试解决问题。”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” “,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:” “,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”heading”,”attrs”:{“align”:null,”level”:2},”content”:[{“type”:”text”,”text”:”参考”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”bulletedlist”,”content”:[{“type”:”listitem”,”content”:[{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”link”,”attrs”:{“href”:”https://kubernetes-csi.github.io/docs/introduction.html”,”title”:””},”content”:[{“type”:”text”,”text”:”kubernetes-csi-introduction”,”attrs”:{}}]}]}],”attrs”:{}},{“type”:”listitem”,”content”:[{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”link”,”attrs”:{“href”:”https://draveness.me/kubernetes-volume/”,”title”:””},”content”:[{“type”:”text”,”text”:”详解 Kubernetes Volume 的实现原理”,”attrs”:{}}]}]}],”attrs”:{}},{“type”:”listitem”,”content”:[{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”link”,”attrs”:{“href”:”https://www.dazhuanlan.com/2020/01/31/5e33a33ba05d1/”,”title”:””},”content”:[{“type”:”text”,”text”:”CSI存储接口解释”,”attrs”:{}}]}]}],”attrs”:{}}],”attrs”:{}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null},”content”:[{“type”:”text”,”text”:”关注公众号,获取最新文章推送:”,”attrs”:{}}]},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”image”,”attrs”:{“src”:”https://static001.geekbang.org/infoq/5d/5deb67509e4bddb6d90e87cd91a03562.png”,”alt”:null,”title”:null,”style”:null,”href”:null,”fromPaste”:true,”pastePass”:true}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}},{“type”:”paragraph”,”attrs”:{“indent”:0,”number”:0,”align”:null,”origin”:null}}]}

《K8S CSI容器存储接口(一):介绍以及原理》有272个想法
  1. Я считаю, что Вы ошибаетесь. Могу отстоять свою позицию. Пишите мне в PM, поговорим.
    як зафіксувати до повербанку роутер для wi-fi 2-ма способами, https://www.sq.com.ua/rus/novosti_partnerov/09.10.2023/vybor-pravilnogo-skanera-strix-kodov-sovety-dlya-predprinimatelei-i-potrebitelei пояснює ТСН.ІА. час роботи також залежить від цього, наскільки потужні повербанки, які ви відкриваєте.

  2. Приветствуем вас, друзья, на вашем интернет-сайте!

    Мы представляем агентство по СЕО продвижению XRumer Inc.

    Ваш онлайн-сайт, как мы видим, еще только набирает обороты. Чтобы ускорить процесс его роста, готовы предложить услуги по внешней СЕО-оптимизации. Продвижение в поисковиках – наша работа. В ассортименте присутствуют надежные и эффективные СЕО-инструменты для специалистов. У нас серьезный опыт в данном направлении и огромное портфолио успешных проектов – если интересно, покажем по вашему запросу.

    Наша компания предлагает скидку 10% до конца месяца.

    Услуги:

    – Трастовые ссылки (нужно абсолютно всем сайтам) – стоимость 1500-5000 рублей

    – Безанкорные ссылки (2500 штук) (полезно любым сайтам) – 3900 р

    – Прогон на 110 тыс. сайтов в зоне RU (очень полезно для сайтов) – 2.900 рублей

    – 150 постов В Контакте о вашем сайте (поможет в рекламе) – 3.900 руб

    – Публикации о вашем сайте на 300 топовых онлайн-форумах (мощнейшая раскрутка вашего ресурса) – 29 тыс. р

    – Мега Постинг – отличный прогон на 3 млн ресурсов (огромное размещение для ваших сайтов) – 39.900 руб

    – Рассылка рекламных сообщений по сайтам при помощи обратной связи – стоимость по договоренности, будет зависеть от объемов.

    Если имеются вопросы, обращайтесь, поможем.

    Telegram: @xrumers
    https://XRumer.cc/
    Skype: Loves.Ltd

  3. PBN sites
    We will build a system of private blog network sites!

    Benefits of our privately-owned blog network:

    WE DO everything so Google does not realize THAT this is A private blog network!!!

    1- We buy domain names from various registrars

    2- The main site is hosted on a virtual private server (Virtual Private Server is fast hosting)

    3- The remaining sites are on various hostings

    4- We designate a unique Google ID to each site with verification in Search Console.

    5- We design websites on WordPress, we don’t utilize plugins with assisted by which Trojans penetrate and through which pages on your websites are produced.

    6- We do not reiterate templates and employ only distinct text and pictures

    We don’t work with website design; the client, if desired, can then edit the websites to suit his wishes

  4. доставка пива 24 часа

    • Коньяк – напиток для ценителей тонких, роскошных вкусов и терпких ароматов выдержанного алкоголя «с характером». Кроме того, бутылка элитного коньяка в красивой упаковке – это беспроигрышный подарок, который можно заказать с доставкой на дом 24 часа в сутки. Что это будет – армянский либо французский коньяк или, может быть, грузинский бренди – решать вам.

    Source:

    доставка пива 24 часа

  5. Эволюция печей для бани: от древности до современности.
    Топ-5 печей для бани: какие модели пользуются наибольшей популярностью.
    Готовые печи для бани https://www.pech-domoy.ru/ .

  6. Как убрать пятна на сиденьях автомобиля?
    Как вернуть свежесть салону автомобиля?
    Как сохранить чистоту в салоне автомобиля?
    Лучшая химия для химчистки салона автомобиля https://www.himchistka-avtosalona.ru .

  7. Покупка визы в Италию через нелегальные каналы может привести к серьезным последствиям, включая отказ в въезде. Всегда следует обращаться только в официальные визовые центры или консульства.
    Италия записаться на визу http://www.visa-v-italiyu.ru .

  8. Специализированный сервис для владельцев Ниссан, где каждый клиент ценится.
    Надежный автосервис Ниссан для Вашего авто, где решают любые проблемы быстро и качественно.
    Автосервис Ниссан с безупречной репутацией, которые знают все особенности этой марки.
    Где Ваш Ниссан в надежных руках, где вас ждет профессиональный подход и внимание к деталям.
    Где Ваш автомобиль Ниссан будет в надежных руках, и вы получите идеальный результат.
    Ниссан ремонт сервис https://www.nissan-remont-1.ru .

  9. Ваш выбор в пользу Визатеки гарантирует оперативность и профессионализм в подготовке документов.
    Виза спб Визотека

  10. Меры по восстановлению и укреплению строительных конструкций.
    Эффективные способы защиты зданий и сооружений от внешних воздействий.
    Обследование зданий и сооружений Москва http://www.obsledovanie-zdanyi.ru .

  11. Я считаю, что Вы не правы. Я уверен. Давайте обсудим. Пишите мне в PM.
    Being the most luxurious https://mmuitvaart.nl/logokm125/ is distinguished by extensive green lawns, a huge territory, a swimming pool, spacious rooms, and an abundance of space for holding any events.

  12. Роль технического надзора на объекте строительства, как это работает.
    Критерии выбора специалистов по техническому надзору, чтобы избежать проблем.
    Как происходит процесс технического надзора на строительной площадке, чтобы быть в курсе.
    Риски, связанные с отсутствием технического надзора, и как избежать негативных последствий.
    Советы по оптимизации работы технического надзора, которые пригодятся вам.
    Технический надзор: основные принципы и методы, для обеспечения высокого качества работ.
    Стройконтроль и авторский надзор stroitelny-nadzor.ru .

  13. Основные аспекты технического надзора в строительстве, как это работает.
    Как выбрать надежную компанию для проведения технического надзора, с целью минимизации рисков.
    Как происходит процесс технического надзора на строительной площадке, которые важно знать.
    Последствия игнорирования технического надзора, и как избежать негативных последствий.
    Советы по оптимизации работы технического надзора, для достижения лучших результатов.
    Ключевые аспекты успешного технического надзора, которые следует учитывать.
    Контроль выполнения строительных работ https://stroitelny-nadzor.ru .

  14. Идеальный выбор для обслуживания Toyota в столице, где профессионалы знают свое дело.
    Экспертный сервис для японских машин, гарантия качества и надежности.
    Профессиональное обслуживание и ремонт Toyota в Москве, ваш автомобиль заслуживает только лучшего.
    Toyota в Москве: надежный сервис с гарантией качества, где доверяют свой автомобиль специалистам.
    Лучший выбор для обслуживания Toyota в Москве, где ценят ваше время и деньги.
    Идеальное решение для обслуживания японских автомобилей, где каждый дефект устраняется быстро и качественно.
    Профессиональный ремонт и обслуживание Toyota, где доверяют свой автомобиль только профессионалам.
    Автосервис Toyota Москва https://toyota-remont.ru/ .

  15. UEFA Euro 2024 Sân Chơi Bóng Đá Hấp Dẫn Nhất Của Châu Âu

    Euro 2024 là sự kiện bóng đá lớn nhất của châu Âu, không chỉ là một giải đấu mà còn là một cơ hội để các quốc gia thể hiện tài năng, sự đoàn kết và tinh thần cạnh tranh.

    Euro 2024 hứa hẹn sẽ mang lại những trận cầu đỉnh cao và kịch tính cho người hâm mộ trên khắp thế giới. Cùng tìm hiểu các thêm thông tin hấp dẫn về giải đấu này tại bài viết dưới đây, gồm:

    Nước chủ nhà
    Đội tuyển tham dự
    Thể thức thi đấu
    Thời gian diễn ra
    Sân vận động

    Euro 2024 sẽ được tổ chức tại Đức, một quốc gia có truyền thống vàng của bóng đá châu Âu.

    Đức là một đất nước giàu có lịch sử bóng đá với nhiều thành công quốc tế và trong những năm gần đây, họ đã thể hiện sức mạnh của mình ở cả mặt trận quốc tế và câu lạc bộ.

    Việc tổ chức Euro 2024 tại Đức không chỉ là một cơ hội để thể hiện năng lực tổ chức tuyệt vời mà còn là một dịp để giới thiệu văn hóa và sức mạnh thể thao của quốc gia này.

    Đội tuyển tham dự giải đấu Euro 2024

    Euro 2024 sẽ quy tụ 24 đội tuyển hàng đầu từ châu Âu. Các đội tuyển này sẽ là những đại diện cho sự đa dạng văn hóa và phong cách chơi bóng đá trên khắp châu lục.

    Các đội tuyển hàng đầu như Đức, Pháp, Tây Ban Nha, Bỉ, Italy, Anh và Hà Lan sẽ là những ứng viên nặng ký cho chức vô địch.

    Trong khi đó, các đội tuyển nhỏ hơn như Iceland, Wales hay Áo cũng sẽ mang đến những bất ngờ và thách thức cho các đối thủ.

    Các đội tuyển tham dự được chia thành 6 bảng đấu, gồm:

    Bảng A: Đức, Scotland, Hungary và Thuỵ Sĩ
    Bảng B: Tây Ban Nha, Croatia, Ý và Albania
    Bảng C: Slovenia, Đan Mạch, Serbia và Anh
    Bảng D: Ba Lan, Hà Lan, Áo và Pháp
    Bảng E: Bỉ, Slovakia, Romania và Ukraina
    Bảng F: Thổ Nhĩ Kỳ, Gruzia, Bồ Đào Nha và Cộng hoà Séc

  16. Mailing:

    Connecting via comment forms is an expressive demonstration of contemporary business interaction, merging the top of judgment and tech. This strategy provides companies a direct line to their consumers, enabling them to grasp the subtleties of user experience, garner beneficial feedback, and, most, prove that they are continually listening. Rather navigating the cluttered terrain of emails and promotional messages, feedback forms offer a clutter-free space, clearing the way for true dialogue and increasingly engaged conversations.

    Additionally, mailing to comment forms is a proof to a company’s commitment to ongoing enhancement. Rather of operating in a void, enterprises get an priceless perspective into their customers’ minds, opening up chances for growth, enhancement, and creating firmer connections. As consumer needs change, this two-way interaction channel ensures that companies remain not just applicable but deeply linked to their viewer’s ever-changing likes and concerns. In the grand scheme of things, it’s not merely about amassing feedback; it’s about fostering trust and solidifying relationships that stand the test of time.

    Отчётность.
    Оплата: Yoo.Деньги, Bitcoin, МИР, Visa, MasterCard…
    Принимаем USDT
    Телега: @exrumer
    Skype: Loves.Ltd
    https://xrumer.cc/
    Только этот.

  17. кракен сайт даркнет

    Не могу понять, как зайти на blacksprut официальный сайт. Кто-нибудь может помочь? Я слышал, что там много интересных материалов.

    Source:

    https://kraken014.com/

  18. Какие отзывы о ботоксе? Отзывы обычно положительные, пациенты отмечают заметное улучшение внешнего вида кожи и уменьшение симптомов лечимых состояний
    ботокс фулфейс до и после https://www.b-tox.ru/ .

  19. Как долго длится процедура ботулинотерапии? Процедура обычно занимает от 15 до 30 минут в зависимости от объема работы
    ботулинотерапия видео https://msc.botox.life .

  20. Team up with our community of beyond 2 million happy users who are saving measure and getting paid faster with our expressive invoice solutions. Our travelling invoicing tools, including agile invoice apps, purvey to both iOS and Android users. Whether you demand an invoice app concerning iPhone, an Android invoice app, or a sweeping versatile billing software, we’ve got you covered.
    https://www.genio.ac/mobile-invoices

  21. Есть ли побочные эффекты у Релатокс? Возможные побочные эффекты включают покраснение, отек, синяки и временную мышечную слабость
    на какой день встает релатокс http://www.relatox.b-tox.ru/ .

  22. Какие еще существуют показания для использования Релатокс? Помимо косметических целей, Релатокс используется для лечения гиперактивного мочевого пузыря и хронической боли
    релатокс сколько единиц нужно на глаза http://www.relatox.b-tox.ru/ .

  23. Биоревитализация: откройте новый уровень ухода за кожей, широкий выбор биоревитализации для каждого типа кожи, подробный гид по выбору клиники для биоревитализации, самостоятельная биоревитализация: риски и преимущества, секреты выбора качественных препаратов для биоревитализации, результаты биоревитализации: на что можно рассчитывать, видеообзоры биоревитализации от профессионалов, как биоревитализация помогает мужской коже оставаться молодой, инъекционная биоревитализация или мезотерапия: что выбрать, новые технологии в области биоревитализации кожи.
    биоревитализация лица цена biorevitalization.com.ru .

  24. услуги по сертификации

    Услуги сертификации — это важный инструмент для обеспечения качества продукции и услуг, а также защиты прав потребителей. Важно выбрать надёжную компанию, которая предоставляет услуги сертификации в соответствии с международными стандартами и требованиями законодательства.

    Source:

    [url=https://vse-novosti.net/osobennosti-dobrovolnoj-sertifikaczii/]услуги по сертификации[/url]

  25. Какие отзывы о биорепарации? Отзывы обычно положительные, пациенты отмечают значительное улучшение состояния кожи и её текстуры
    биорепарация лица фото до и после http://www.biorevitalizacia.com .

  26. Что такое симпатэктомия и как она помогает при гипергидрозе? Симпатэктомия – это хирургическая процедура, при которой перерезаются или блокируются нервы, отвечающие за потоотделение, что приводит к значительному уменьшению потливости
    потливость подмышек https://potlivost-podmyshek.ru/ .

  27. What is Myotox? Myotox is a botulinum toxin type A-based drug used in botulinum therapy to temporarily relax muscles, helping to reduce wrinkles and treat various medical conditions
    миотокс цена флакона купить miotox.b-tox.ru .

  28. Бесплатный хостинг в Беларуси: качество и надежность, плюсы и минусы.
    Бесплатные хостинги в Беларуси: что выбрать?, инструкции и рекомендации.
    Выбор профессионалов: топ-3 хостинга в Беларуси бесплатно, плюсы и минусы.
    Как перенести сайт на бесплатный хостинг в Беларуси?, техническая документация.
    Бесплатный SSL для хостинга в Беларуси: зачем он нужен?, плюсы и минусы.
    DIY: с нуля до готового сайта на хостинге в Беларуси бесплатно, гайд для начинающих.
    Где можно купить хостинг в Беларуси дешево и качественно?, характеристики и отзывы.
    Рейтинг хостингов Беларуси Рейтинг хостингов Беларуси .

  29. Каждый год в течение сентября проводится Тюменский инновационный форум «НЕФТЬГАЗТЭК».
    Форум посвящен определению способов инноваторского роста областей топливно-энергетического комплекса, рассмотрению и поиску решений, созданию благоприятных обстоятельств для формирования инноваторских проектов. Ежегодный тюменский форум представляетсобой важной дискуссионной площадкой по увеличению роста нефтегазовой отрасли в Российской Федерации, имеет большой авторитет и актуальность, созвучен общей стратегии продвижения инноваторского направления в Российской Федерации
    https://neftgaztek.ru/

  30. Качественная проверка и заправка кондиционеров авто в Москве, где найти.
    Заправка фреоном кондиционера авто должна выполняться с использованием качественного хладагента. https://zapravka-avtokonditsioner.ru/ .

  31. Ежегодно в течение сентября организовывается Тюменский инновационный форум «НЕФТЬГАЗТЭК».
    Форум посвящен развитию механизмов инноваторского продвижения секторов топливно-энергетического комплекса, дискуссии а также поиску заключений, созданию наилучших условий для расчета инновационных проектов. Ежегодный тюменский форум является авторитетной дискуссионной площадкой по продвижению нефтегазовой отрасли в России, содержит высокий авторитет и своевременность, созвучен корпоративной стратегии продвижения инновационного курса в Российской Федерации
    https://neftgaztek.ru/

  32. How to prevent warts? Prevention includes maintaining hygiene, avoiding contact with infected people and objects, strengthening the immune system, and getting the HPV vaccine
    как вывести бородавку на пальце http://shectakov.ru/ .

  33. Ежегодно в середине сентября проводится Тюменский инновационный форум «НЕФТЬГАЗТЭК».
    Форум посвящен развитию мнтодов инновационного продвижения отраслей топливно-энергетического комплекса, обсуждению и определению решений, организации благоприятных обстоятельств для развития инноваторских проектов. Ежегодный тюменский форум является влиятельной дискуссионной площадкой по развитию нефтегазовой ветви в России, содержит высокий статус и своевременность, созвучен общей стратегии продвижения инноваторского курса в Российской Федерации
    https://neftgaztek.ru/

  34. Ежегодно в течение сентября организовывается Тюменский инновационный форум «НЕФТЬГАЗТЭК».
    Форум посвящен определению механизмов инновационного развития областей топливно-энергетического комплекса, дискуссии а также поиску ответов, организации благоприятных обстоятельств для расчета инноваторских проектов. Ежегодный тюменский форум представляетсобой авторитетной дискуссионной площадкой по продвижению нефтегазовой отрасли в Российской Федерации, имеет большой статус и своевременность, созвучен общей стратегии формирования инновационного направления в России
    https://neftgaztek.ru/

  35. Каждый год в середине сентября проходит Тюменский инновационный форум «НЕФТЬГАЗТЭК».
    Форум посвящен определению способов инноваторского роста секторов топливно-энергетического комплекса, рассмотрению и поиску решений, созданию наилучших обстоятельств для расчета инновационных проектов. Ежегодный тюменский форум представляетсобой авторитетной дискуссионной площадкой по продвижению нефтегазовой сферы в Российской Федерации, имеет высокий статус и своевременность, созвучен корпоративной стратегии продвижения инновационного курса в Российской Федерации
    https://neftgaztek.ru/

  36. Лучший способ провести строительный аудит в Москве, качественно и без лишних затрат.
    Аудит строительного проекта позволяет определить риски и проблемы на ранних стадиях строительства. https://audit-stroitelnykh-rabot.ru .

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注