--- # Source: calico/templates/calico-kube-controllers.yaml # This manifest creates a Pod Disruption Budget for Controller to allow K8s Cluster Autoscaler to evict apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: calico-kube-controllers namespace: kube-system labels: k8s-app: calico-kube-controllers spec: maxUnavailable: 1 selector: matchLabels: k8s-app: calico-kube-controllers --- # Source: calico/templates/calico-kube-controllers.yaml apiVersion: v1 kind: ServiceAccount metadata: name: calico-kube-controllers namespace: kube-system --- # Source: calico/templates/calico-node.yaml apiVersion: v1 kind: ServiceAccount metadata: name: calico-node namespace: kube-system --- # Source: calico/templates/calico-config.yaml # This ConfigMap is used to configure a self-hosted Calico installation. kind: ConfigMap apiVersion: v1 metadata: name: calico-config namespace: kube-system data: # Typha is disabled. typha_service_name: "none" # Configure the backend to use. calico_backend: "bird" # Configure the MTU to use for workload interfaces and tunnels. # By default, MTU is auto-detected, and explicitly setting this field should not be required. # You can override auto-detection by providing a non-zero value. veth_mtu: "0" # The CNI network configuration to install on each node. The special # values in this config will be automatically populated. cni_network_config: |- { "name": "k8s-pod-network", "cniVersion": "0.3.1", "plugins": [ { "type": "calico", "log_level": "info", "log_file_path": "/var/log/calico/cni/cni.log", "datastore_type": "kubernetes", "nodename": "__KUBERNETES_NODE_NAME__", "mtu": __CNI_MTU__, "ipam": { "type": "calico-ipam" }, "policy": { "type": "k8s" }, "kubernetes": { "kubeconfig": "__KUBECONFIG_FILEPATH__"
时间: 2025-03-19 07:05:31 浏览: 46
### Calico 在 Kubernetes 中的配置详解
#### 1. **Calico 的基本功能**
Calico 是一种流行的开源网络解决方案,用于实现 Kubernetes 集群中的网络策略 (NetworkPolicy)[^1]。它通过提供细粒度的安全性和隔离能力来增强集群安全性。
---
#### 2. **Calico 组件及其作用**
以下是 Calico 在 Kubernetes 中的主要组件及其功能:
- **calico/node 容器**:
这是一个 DaemonSet,在每个节点上运行 calico/node 容器,负责管理路由表、IP 地址分配以及与其他节点之间的通信[^2]。
- **CNI 插件**:
使用另一个 DaemonSet 将 Calico CNI 二进制文件和网络配置部署到每个节点上,从而支持 Kubernetes 网络接口标准(CNI)。
- **calico/kube-controller Deployment**:
此控制器处理与 Kubernetes API Server 的集成工作,例如同步数据和服务代理等功能。
- **Secret/calico-etcd-secrets**:
提供 TLS 密钥信息以便安全地连接 etcd 数据库(如果启用了加密传输的话)。这是可选项。
- **ConfigMap/calico-config**:
存储安装过程中所需的全局参数设置,比如 IP 池范围等。
---
#### 3. **PodDisruptionBudget 字段含义及用途**
`PodDisruptionBudget` (PDB) 是用来控制应用中断容忍度的一种机制。其主要字段如下:
- `minAvailable`: 表示最小可用副本数或者百分比形式表示的比例。
- `maxUnavailable`: 可以被驱逐的最大不可用实例数量或比例。
- 当两者同时存在时,取更严格的约束条件作为实际生效规则[^3].
此对象帮助管理员确保即使在维护期间也能维持服务级别协议(SLA),防止因计划外的操作而导致整个应用程序完全下线的情况发生.
---
#### 4. **ServiceAccount 字段解释**
Kubernetes 中的服务账户(Service Account)允许 Pods 访问特定权限下的 API 请求或其他外部资源。常见的几个属性有:
- `metadata.name`: 唯一标识符.
- `secrets[]`: 关联 Secret 对象列表,通常包含访问令牌(token).
- `imagePullSecrets[]`: 如果镜像存储于私仓,则需指定拉取凭证名.
这些信息共同构成了 Pod 执行操作所需的身份认证基础结构.
---
#### 5. **ConfigMap 各字段意义**
ConfigMaps 主要用于保存非敏感性的配置项,可以映射成环境变量或是挂载为卷内的文件内容给容器使用。具体来说:
- `data`: 键值对集合,其中键代表变量名称而对应的值则是具体的设定字符串。
- 若要将其加载至 Volume 下面则还需要定义相应的路径位置(`claimName`) 和读写模式 (`readOnly`) [^3]:
```yaml
apiVersion: v1
kind: PersistentVolumeClaim
spec:
volumes:
- name: config-volume
persistentVolumeClaim:
claimName: my-pvc-name
readOnly: false
```
上述 YAML 片段展示了如何利用 PVC 来持久化存储 ConfigMap 文件的方式之一。
---
### 总结
以上是对 Calico 在 Kubernetes 上配置的一些核心概念解析,涵盖了从底层架构设计思路直至高级运维技巧等多个层面的知识要点。希望对你有所帮助!
---
阅读全文
相关推荐


















