Investigating and Solving the Issue of Failed Certificate Request with ZeroSSL and Cert-Manager
In this blog post, I will walk through my journey investigating and resolving an issue where my certificate request from ZeroSSL…
阅读全文K8S集群跨云迁移
要将K8S集群从一个云服务商迁移到另外一个,需要解决以下问题:
- 各种K8S资源的迁移
- 工作负载所挂载的数据卷的迁移
- 工作负载所使用的镜像的迁移
K8S资源、数据卷的迁移,可以考虑基于Velero项目。镜像仓库的迁移较为简单,可供选择的开源工具包括阿里云的image-syncer、腾讯云的image-transfer。
编写Kubernetes风格的APIServer
前段时间接到一个需求做一个工具,工具将在K8S中运行。需求很适合用控制器模式实现,很自然的就基于kubebuilder进行开发了。但是和K8S环境提供方沟通时发现,他们不允许工作负载调用控制平面的接口,这该怎么办呢。
最快速的解决方案是,自己运行一套ku…
阅读全文IPVS模式下ClusterIP泄露宿主机端口的问题
在一个启用了IPVS模式kube-proxy的K8S集群中,运行着一个Docker Registry服务。我们尝试通过docker manifest命令(带上--insecure参数)来推送manifest时,出现TLS timeout错误。
这个Registry通过ClusterIP类型的Service暴露访问端点,且仅仅配置了HTTP/80端口。docker manifest命令的--insecure参数的含义是,在Registry不支持HTTPS的情况下,允许使用不安全的HTTP协议通信。…
阅读全文Galaxy学习笔记
Galaxy是TKEStack的一个网络组件,支持为TKE集群提供Overlay/Underlay容器网络。Galaxy的一个特性是能够提供浮动IP(弹性IP) —— 即使Pod因为节点宕机而漂移到其它节点,其IP地址也能够保持不变。
Galax…
阅读全文Cilium学习笔记
Cilium是在Docker/K8S之类的容器管理平台下,透明的为应用程序服务提供安全网络连接的开源软件。Cilium的底层技术是eBPF,eBPF完全在内核中运行,因此改变Cilium的安全策略时不需要程序代码、容器配置的任何变更。
如何在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下,但是不会导致存储空间的消耗。
容…
阅读全文