Certified Calico Operator: Level 1 笔记

证书课程地址:Course | CCO-L1 | Tigera还有一份可能有用的电子书: Tigera_eBook_Intro_to_Kubernetes_Networking.pdf

Kubernetes Network Model

  1. 每个 Pod 都有一个 IP 地址;
  2. 同一个 Pod 中的容器共享同一 IP 地址,并能通过该地址相互通信;
  3. Pod 与 Pod 之间可以通过 IP 通信(无需地址转换);
  4. 网络隔离可以限制哪里 Pod 可以访问哪些不可以。

安装测试集群

curl https://raw.githubusercontent.com/tigera/ccol1/main/control-init.yaml | multipass launch -n control -m 2048M 20.04 --cloud-init -
curl https://raw.githubusercontent.com/tigera/ccol1/main/node1-init.yaml | multipass launch -n node1 20.04 --cloud-init -
curl https://raw.githubusercontent.com/tigera/ccol1/main/node2-init.yaml | multipass launch -n node2 20.04 --cloud-init -
curl https://raw.githubusercontent.com/tigera/ccol1/main/host1-init.yaml | multipass launch -n host1 20.04 --cloud-init -

重启系统后,可能需要启动所有的虚拟机

multipass start --all

安装 Calico

4 种安装方式

  • Manifest
  • Operator
  • Managed Kubernetes Services
  • Kubernetes Distros and Installers

Operator 方式安装

可参考:Quickstart for Calico on Kubernetes注意事项:

  1. Pod 的网段
  2. calico 版本与 kubernetes 版本之间的兼容关系(最好就用教程里面的安装命令)
kubectl create -f https://docs.projectcalico.org/archive/v3.21/manifests/tigera-operator.yaml
cat <<EOF | kubectl apply -f -
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
  name: default
spec:
  calicoNetwork:
    containerIPForwarding: Enabled
    ipPools:
    - cidr: 198.19.16.0/20
      natOutgoing: Enabled
      encapsulation: None
EOF

删除 tigera-operator 命名空间

curl -H "Content-Type: application/json" \
-XPUT \
-d '{"apiVersion":"v1","kind":"Namespace","metadata":{"name":"tigera-operator"},"spec":{"finalizers":[]}}' \
http://localhost:8001/api/v1/namespaces/tigera-operator/finalize

相关 Pod 的工作内容:

  • tigera-operator/tigera-operator-xxxx-xxx

监听 Installation CR,并按照配置安装 calico CNI。

  • calico-system/calico-node

DaemonSet,网络策略实现;设置Node节点上的路由;为 IPIP、VXLAN、WireGuard 管理虚拟接口。

  • calico-system/calico-typha

StatefulSet,作为 calico-node 用来查询、监听 api-server 时的缓存层,避免直接访问 api-server。它由 tigera-operator 来随着 node 的变化,进行扩缩容。

  • calico-system/calico-controller

calico 的各种 controller 集合,用于自动同步资源状态。

Read more

容器镜像(4):镜像的常用工具箱

容器镜像(4):镜像的常用工具箱

前几篇在讲多架构镜像时已经用过 skopeo 和 crane 做镜像复制,这篇系统整理这两个工具的完整能力,同时介绍几个日常操作镜像时同样好用的工具。 一、skopeo:不依赖 Daemon 的镜像瑞士军刀 skopeo 的核心价值是绕过 Docker daemon,直接与 Registry API 交互。上一篇用它做镜像复制和离线传输,但它的能力远不止于此。 1.1 安装 # Ubuntu / Debian sudo apt install -y skopeo skopeo --version # skopeo version 1.15.1 1.2 inspect:免拉取检查镜像元数据 docker inspect 需要先把镜像拉到本地,skopeo inspect 直接向 Registry

容器镜像(3):多架构镜像构建

容器镜像(3):多架构镜像构建

一、什么是多架构镜像 1.1 OCI Image Index 上一篇介绍了单平台镜像的结构:一个 Manifest 指向 Config 和若干 Layer blob。多架构镜像在此之上多了一层——OCI Image Index(也叫 Manifest List),是一个轻量的索引文件,把多个单平台 Manifest 组织在一起: $ docker manifest inspect golang:1.22-alpine { "schemaVersion": 2, "mediaType": "application/vnd.oci.image.index.v1+json", "manifests&

容器镜像(2):containerd 视角下的镜像

容器镜像(2):containerd 视角下的镜像

一、为什么需要了解 containerd 如果你只用 docker run 跑容器,从来不关心底层,那可以不了解 containerd。但如果你在用 Kubernetes,或者想真正理解"容器运行时"是什么,containerd 是绕不开的。 事实上,当你执行 docker run 的时候,containerd 早就在后台悄悄工作了——Docker 从 1.11 版本开始,就把核心运行时剥离出来交给 containerd 负责。 1.1 Docker 的架构演变 早期的 Docker(1.10 及之前)是一个"大一统"的单体程序:一个 dockerd