如何在Pod中执行宿主机上的命令
要回答标题中的疑问,我们首先要清楚,Pod是什么?
Pod的翻译叫容器组,顾名思义,是一组容器。叫做“组”是因为这些容器:
- 总是被同时调度,调度到同一节点
- 共享网络,具有相同的IP地址和端口空间,可以通过localhost相互访问
- 可以基于System…
通过ExternalDNS集成外部DNS服务
ExternalDNS项目的目的是,将Kubernetes的Service/Ingress暴露的服务(的DNS记录)同步给外部的DNS Provider。
ExternalDNS的设计思想类似于KubeDNS,都是从多种K8S API资源中推断需要生成的DNS记录。不同之处是…
阅读全文Kubefed学习笔记
集群联邦(Federation)的目的是实现单一集群统一管理多个Kubernetes集群的机制,这些集群可能是跨地区(Region),也可能是在不同公有云供应商上,亦或者是公司内部自行建立的集群。一但集群进行联邦后,就可以利用Federation API资…
阅读全文限制Pod磁盘空间用量
容器在运行期间会产生临时文件、日志。如果没有任何配额机制,则某些容器可能很快将磁盘写满,影响宿主机内核和所有应用。
容器的临时存储,例如emptyDir,位于目录/var/lib/kubelet/pods下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
/var/lib/kubelet/pods/ └── ac0810f5-a1ce-11ea-9caf-00e04c687e45 # POD_ID ├── containers │ ├── istio-init │ │ └── 32390fd7 │ ├── istio-proxy │ │ └── 70ed81da │ └── zookeeper │ └── e9e21e59 ├── etc-hosts # 命名空间的Host文件 └── volumes # Pod的卷 ├── kubernetes.io~configmap # ConfigMap类型的卷 │ └── istiod-ca-cert │ └── root-cert.pem -> ..data/root-cert.pem ├── kubernetes.io~downward-api │ └── istio-podinfo │ ├── annotations -> ..data/annotations │ └── labels -> ..data/labels ├── kubernetes.io~empty-dir # Empty类型的卷 │ ├── istio-data │ └── istio-envoy │ ├── envoy-rev0.json │ └── SDS ├── kubernetes.io~rbd # RBD卷 │ └── pvc-644a7e30-845e-11ea-a4e1-70e24c686d29 # /dev/rbd0挂载到这个挂载点 ├── kubernetes.io~csi # CSI卷 └── kubernetes.io~secret # Secret类型的卷 └── default-token-jp4n8 ├── ca.crt -> ..data/ca.crt ├── namespace -> ..data/namespace └── token -> ..data/token |
持久卷的挂载点也位于/var/lib/kubelet/pods下,但是不会导致存储空间的消耗。
容…
阅读全文Flexvolume学习笔记
容器在磁盘上写的文件是临时性的,没有持久化保证。如果容器崩溃,Kubelet会重启它,临时文件就都丢失了。此外,在Pod中运行的多个容器,可能有共享存储的需求。这两点正是K8S卷(Volume)来解决的。
Docker也有卷的概念,但是它的卷仅仅是宿主…
阅读全文CSI学习笔记
从1.8版本开始,Kubernetes Storage SIG开始停止接受in-tree卷插件,并建议所有供应商实现out-of-tree卷插件。CSI是两种out-of-tree的K8S卷扩展机制之一,另外一个是Flexvolume。
Flexvolume的工作方式是,由…
阅读全文通过WebAssembly扩展Envoy
WebAssembly(简称Wasm)是一种供基于栈的虚拟机使用的二进制指令格式。它作为C/C++/Rust这样的高级语言的编译目标,部署在现代浏览器或者服务器端应用程序中运行。
Wasm的优势:
- 性能:基于通用硬件能力实现Native运行速度
- 安…
CRIU和Pod在线迁移
对于IaaS平台来说,虚拟机在线迁移是普遍实现的特性。所谓在线迁移,就是把虚拟机从一台物理机透明的移动到另外一台物理机上,(几乎)不会导致服务中断。
在线迁移的价值是,当宿主机操作系统需要升级,或者硬件出现故障需要停机处理时,用户的工作负载不会受到影响。如果在IaaS之上部署Kubernetes,自然可以使用现有的虚拟机在线迁移,间接实现Pod的在线迁移。然而,直接在裸金属之上部署Kubernetes,…
阅读全文