Cilium 相关命令解读

Cilium 命令

以下是一些常用的 Cilium 命令:

  1. cilium status: 显示 Cilium 的状态信息,包括节点、代理、网络等信息。

  2. cilium endpoint list: 显示所有的 Cilium 端点信息。

  3. cilium policy list: 显示所有的 Cilium 策略信息。

  4. cilium network list: 显示所有的 Cilium 网络信息。

  5. cilium service list: 显示所有的 Cilium 服务信息。

  6. cilium monitor: 启动 Cilium 监视器,可以监视网络流量、策略等信息。

  7. cilium install: 安装 Cilium。

  8. cilium uninstall: 卸载 Cilium。

  9. cilium help: 显示 Cilium 帮助信息。

以上是一些常用的 Cilium 命令,还有更多命令可以通过 cilium --help 查看。

cilium
CLI for interacting with the local Cilium Agent

Usage:
  cilium [command]

Available Commands:
  bpf         Direct access to local BPF maps
  cleanup     Remove system state installed by Cilium at runtime
  completion  Output shell completion code
  config      Cilium configuration options
  debuginfo   Request available debugging information from agent
  endpoint    Manage endpoints
  fqdn        Manage fqdn proxy
  help        Help about any command
  identity    Manage security identities
  ip          Manage IP addresses and associated information
  kvstore     Direct access to the kvstore
  lrp         Manage local redirect policies
  map         Access userspace cached content of BPF maps
  metrics     Access metric status
  monitor     Display BPF program events
  node        Manage cluster nodes
  policy      Manage security policies
  prefilter   Manage XDP CIDR filters
  preflight   cilium upgrade helper
  recorder    Introspect or mangle pcap recorder
  service     Manage services & loadbalancers
  status      Display status of daemon
  version     Print version information

Flags:
      --config string   config file (default is $HOME/.cilium.yaml)
  -D, --debug           Enable debug messages
  -h, --help            help for cilium
  -H, --host string     URI to server-side API

Use "cilium [command] --help" for more information about a command.

资源

k api-resources | grep cil
ciliumclusterwidenetworkpolicies   ccnp           cilium.io                      false        CiliumClusterwideNetworkPolicy
ciliumendpoints                    cep,ciliumep   cilium.io                      true         CiliumEndpoint
ciliumexternalworkloads            cew            cilium.io                      false        CiliumExternalWorkload
ciliumidentities                   ciliumid       cilium.io                      false        CiliumIdentity
ciliumnetworkpolicies              cnp,ciliumnp   cilium.io                      true         CiliumNetworkPolicy
ciliumnodes                        cn,ciliumn     cilium.io                      false        CiliumNode

cilium status --verbose

cilium status --verbose 命令可以显示 Cilium 的详细状态信息,其中包含了许多关键数据点。以下是这些数据点的解释:

  • Cilium version: 显示 Cilium 的版本号。
  • Cluster health: 显示集群健康状况的信息,包括节点数量、Pod 数量、Cilium Agent 运行状态等。
  • Cilium Daemon status: 显示 Cilium Daemon 的状态信息,包括运行时信息、配置信息等。
  • Cilium health: 显示 Cilium 的健康状况,包括连接状态、API 状态、代理状态等。
  • Identity: 显示 Cilium 身份信息,包括节点名称、节点 IP 地址、节点 ID 等。
  • Kubernetes: 显示 Kubernetes 集群的状态信息,包括 API 服务器地址、版本号等。
  • IPAM: 显示 IP 地址管理器的状态信息,包括可用 IP 地址数量、已分配的 IP 地址等。
  • Endpoints: 显示 Endpoint 的状态信息,包括 Endpoint 数量、状态、策略等。
  • Policies: 显示安全策略的状态信息,包括策略数量、状态、规则等。
  • Service Accounts: 显示服务账户的状态信息,包括账户数量、标签等。
  • Backends: 显示后端服务的状态信息,包括后端数量、状态、标签等。
  • Kubernetes Network Policies: 显示 Kubernetes 网络策略的状态信息,包括策略数量、状态、规则等。

通过这些数据点,您可以了解 Cilium 的整体状态以及各个组件的状态信息,有助于您快速定位和解决问题。

扩展@1:
kubectl -n kube-system exec ds/cilium – cilium status --verbose | grep XDP
XDP 加速

https://blog.51cto.com/ewhisper/6978058

扩展@2:
该命令显示了Cilium的详细状态。下面是每个部分的解释:

KubeProxyReplacement Details:

  • Status: 显示Kube-proxy代理的替代方式。在这种情况下,替代方式为Strict。
  • Socket LB Protocols: 显示支持的Socket负载均衡协议,包括TCP和UDP。
  • Devices: 显示使用Cilium的设备和IP地址,例如eth0和10.10.170.165。
  • Mode: 显示Cilium的模式,这里是SNAT(源网络地址转换)。
  • Backend Selection: 显示后端选择策略,这里是随机选择。
  • Session Affinity: 显示会话亲和性是否启用。
  • XDP Acceleration: 显示XDP(eXpress Data Path)加速是否已禁用。

Services:

  • 列出不同类型的服务及其状态,包括ClusterIP、NodePort、LoadBalancer、externalIPs和HostPort。

BPF Maps:

  • 显示BPF(Berkeley Packet Filter)映射的详细信息。
  • dynamic sizing: 表示动态调整BPF映射大小功能是否启用。
  • ratio: 表示动态调整BPF映射大小相对于当前大小的比率。

Name Size:

  • 列出各个BPF映射的名称和大小。

总之,该命令提供了Cilium的配置和状态信息,包括替代Kube-proxy的方式、支持的协议、设备和IP地址、模式、后端选择策略、会话亲和性、BPF映射的详细信息等。这些信息对于了解Cilium的当前配置和性能非常有用。

cilium metrics list

cilium metrics list 命令可以显示 Cilium 的各种指标。以下是常见的指标及其解释:

  • cilium_global_bytes_received_total: 接收到的字节数。
  • cilium_global_bytes_sent_total: 发送的字节数。
  • cilium_global_connections_total: 建立的连接数量。
  • cilium_global_dropped_packets_total: 丢弃的数据包数量。
  • cilium_global_errors_total: 发生的错误数量。
  • cilium_global_packets_received_total: 接收到的数据包数量。
  • cilium_global_packets_sent_total: 发送的数据包数量。
  • cilium_global_policy_dropped_packets_total: 根据安全策略而被丢弃的数据包数量。
  • cilium_global_policy_processed_packets_total: 根据安全策略而被处理的数据包数量。
  • cilium_global_proxy_connections_total: 代理连接数量。
  • cilium_global_proxy_dropped_packets_total: 代理丢弃的数据包数量。
  • cilium_global_proxy_errors_total: 代理发生的错误数量。
  • cilium_global_proxy_packets_received_total: 代理接收到的数据包数量。
  • cilium_global_proxy_packets_sent_total: 代理发送的数据包数量。
  • cilium_global_proxy_processed_packets_total: 代理处理的数据包数量。

这些指标可以提供有关 Cilium 网络性能和安全性的信息。您可以使用 Prometheus 或其他监控工具来收集和分析这些指标,以便进行性能优化和故障排除。

Cilium是一种高效的网络和安全解决方案,可以在Kubernetes集群中提供网络策略和安全性。Cilium提供了许多指标来监视和诊断集群中的网络和安全性。

POST或PUT请求

在Cilium中,post/put请求指的是向Cilium API发送POST或PUT请求。以下是一些常见的Cilium指标列表和解释,涉及到post/put请求:

  1. cilium_api_server_request_duration_seconds:这个指标记录了Cilium API服务器处理请求的时间。这个指标可以用来监视API服务器的性能。

  2. cilium_api_server_request_total:这个指标记录了Cilium API服务器处理的请求数量。这个指标可以用来监视API服务器的负载。

  3. cilium_controller_cache_sync_duration_seconds:这个指标记录了Cilium控制器同步缓存的时间。这个指标可以用来监视控制器的性能。

  4. cilium_controller_cache_sync_total:这个指标记录了Cilium控制器同步缓存的次数。这个指标可以用来监视控制器的负载。

  5. cilium_controller_cache_update_duration_seconds:这个指标记录了Cilium控制器更新缓存的时间。这个指标可以用来监视控制器的性能。

  6. cilium_controller_cache_update_total:这个指标记录了Cilium控制器更新缓存的次数。这个指标可以用来监视控制器的负载。

  7. cilium_controller_endpoint_sync_duration_seconds:这个指标记录了Cilium控制器同步终端的时间。这个指标可以用来监视控制器的性能。

  8. cilium_controller_endpoint_sync_total:这个指标记录了Cilium控制器同步终端的次数。这个指标可以用来监视控制器的负载。

这些指标可以帮助管理员监视Cilium集群的性能和负载,以便及时发现和解决问题。

cilium endpoint list

cilium endpoint list 命令显示的每个 Endpoint 包含以下字段:

  • ID: Endpoint 的唯一标识符。
  • Identity: Endpoint 的身份,通常是 Pod 名称和容器 ID。
  • IPv4: Endpoint 的 IPv4 地址。
  • IPv6: Endpoint 的 IPv6 地址。
  • Labels: Endpoint 的标签,用于标识 Endpoint 属于哪个应用程序或服务。
  • Policy: Endpoint 所属的安全策略。
  • Status: Endpoint 的状态,通常是 readynot ready
  • Node: Endpoint 所在的节点。
  • Interface: Endpoint 的网络接口,通常是 eth0
  • Origin: Endpoint 的来源,通常是 Kubernetes 或者 Cilium Agent。
  • CID: Endpoint 所属的 Cilium 容器 ID。
  • Security ID: Endpoint 的安全 ID,用于检查 Endpoint 是否被允许访问特定的资源。

通过这些字段,您可以了解每个 Endpoint 的详细信息,包括其 IP 地址、标签、策略、状态等。

cilium debuginfo > debuginfo.log

Cilium debuginfo是一个Cilium工具,用于收集和汇总有关Cilium的调试信息。以下是一些常见的Cilium debuginfo解读:

  1. Cilium版本信息:debuginfo中包含了Cilium的版本信息,包括版本号、构建时间、Git提交ID等。这些信息可以帮助管理员确定Cilium的版本和构建信息,以便更好地进行调试和故障排除。

  2. Cilium节点信息:debuginfo中包含了Cilium节点的信息,包括节点名称、IP地址、操作系统信息、内核版本等。这些信息可以帮助管理员了解Cilium集群的节点信息,以便更好地进行调试和故障排除。

  3. Cilium配置信息:debuginfo中包含了Cilium的配置信息,包括网络策略、安全策略、服务发现等。这些信息可以帮助管理员了解Cilium集群的配置信息,以便更好地进行调试和故障排除。

  4. Cilium运行状态信息:debuginfo中包含了Cilium的运行状态信息,包括Cilium代理的运行状态、网络策略的应用情况、集群中的流量情况等。这些信息可以帮助管理员了解Cilium集群的运行状态,以便更好地进行调试和故障排除。

  5. Cilium日志信息:debuginfo中包含了Cilium的日志信息,包括Cilium代理的日志、控制器的日志等。这些信息可以帮助管理员了解Cilium集群的运行情况,以便更好地进行调试和故障排除。

Cilium debuginfo是一个非常有用的工具,可以帮助管理员快速了解Cilium集群的运行情况和故障排除。

查看调用cilium endpoint-delete API接口

要查看谁在调用cilium endpoint-delete API接口,可以使用以下步骤:

  1. 在Cilium节点上启用audit日志记录,以记录所有API请求和响应。在Cilium文档中,有关于如何启用audit日志记录的详细说明。

  2. 查看Cilium的audit日志文件,以查找与endpoint-delete API相关的条目。可以使用以下命令来查看audit日志:

$ sudo cilium monitor -t audit

该命令将以实时模式显示audit日志。可以使用Ctrl+C来停止该命令。

版本要求 cilium version

如果您在运行cilium monitor -t audit命令时遇到了错误invalid argument "audit" for "-t, --type" flag: Unknown type (audit),则说明您的Cilium版本不支持audit类型的监视器。

在Cilium 1.10及以前的版本中,audit类型的监视器不是默认启用的。要启用audit类型的监视器,您需要在Cilium Agent配置文件中显式地指定monitor: audit选项。

在Cilium 1.11及以后的版本中,audit类型的监视器默认启用,并且可以通过cilium monitor -t audit命令来查看audit日志。如果您正在运行Cilium 1.11及以后的版本,但仍然遇到了上述错误,请确保您的Cilium版本已正确安装并运行。

如果您的Cilium版本不支持audit类型的监视器,则可以尝试使用其他类型的监视器,例如capturedebug。例如,以下命令将使用capture类型的监视器来查看Cilium的网络流量:

$ sudo cilium monitor -t capture
  1. 在audit日志中查找与endpoint-delete API相关的条目。可以使用grep和其他文本搜索工具来查找特定的API请求。例如,以下命令将查找所有调用endpoint-delete API的请求:
$ sudo cilium monitor -t audit | grep endpoint-delete
  1. 在audit日志中查找请求的来源IP地址和用户信息。audit日志中包含有关每个API请求的详细信息,包括请求的来源IP地址、API路径、HTTP方法、请求正文和响应状态码。可以使用这些信息来确定调用API的用户和来源。

注意:为了保护系统安全,audit日志中可能会屏蔽某些敏感信息,例如密码和令牌。因此,在查找API请求时,应该注意这些敏感信息的过滤和保护。

cilium monitor -t capture

cilium monitor -t capture命令用于启动Cilium的流量捕获监视器,以便查看Cilium网络流量。该命令将以实时模式显示Cilium网络流量,并将捕获的流量输出到终端。

以下是使用cilium monitor -t capture命令捕获Cilium网络流量的示例输出:

$ sudo cilium monitor -t capture
Capturing on 'eth0'
1   0.000000000 10.0.1.2 → 10.0.1.3   TCP 74  43150 → 80 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=362 TSecr=0 WS=128
2   0.000015468 10.0.1.3 → 10.0.1.2   TCP 74  80 → 43150 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1460 SACK_PERM=1 TSval=362 TSecr=362 WS=128
3   0.000027891 10.0.1.2 → 10.0.1.3   TCP 66  43150 → 80 [ACK] Seq=1 Ack=1 Win=29312 Len=0 TSval=362 TSecr=362
4   0.000052263 10.0.1.2 → 10.0.1.3   HTTP 56  GET / HTTP/1.1 
5   0.000066204 10.0.1.3 → 10.0.1.2   TCP 66  80 → 43150 [ACK] Seq=1 Ack=1 Win=29056 Len=0 TSval=362 TSecr=362
6   0.000090364 10.0.1.3 → 10.0.1.2   HTTP 738 HTTP/1.1 200 OK  (text/html)

在上面的示例中,cilium monitor -t capture命令正在捕获名为eth0的网络接口上的Cilium网络流量。每行输出表示一个网络数据包,并显示源IP地址、目标IP地址、协议类型、端口号和数据包的内容。在这个例子中,我们可以看到一个HTTP GET请求和响应。

请注意,cilium monitor -t capture命令将持续输出捕获的网络流量,直到您使用Ctrl+C停止命令。在实际使用中,您可以将输出重定向到文件中,以便稍后分析和处理。例如,以下命令将捕获的网络流量输出到名为capture.txt的文件中:

$ sudo cilium monitor -t capture > capture.txt

模拟

要模拟cilium DELETE /endpoint/{id}请求,可以使用curl命令。curl是一个常用的命令行工具,用于发送HTTP请求。以下是一个示例curl命令,用于模拟DELETE /endpoint/{id}请求:

curl -X DELETE http://cilium-api-server:8080/api/v1/endpoint/{id} -H 'Content-Type: application/json'

其中,cilium-api-server是Cilium API服务器的主机名或IP地址,8080是Cilium API服务器的端口号,{id}是要删除的endpoint的ID。在请求头中,指定Content-Type为application/json。

请注意,要成功模拟此请求,您需要替换上述命令中的主机名、端口号和endpoint ID。另外,您需要在发送请求之前,确保已经在Cilium API服务器上启用了DELETE /endpoint/{id} API。

如何查看docker 容器启动的端口

要查看Docker容器启动的端口,可以使用docker ps命令列出所有正在运行的容器,并查看每个容器的端口映射。例如,以下命令将列出所有正在运行的容器及其端口映射:

docker ps --format "table {{.Names}}\t{{.Ports}}"

这将输出一个表格,其中包含每个容器的名称和端口映射。例如:

NAMES              PORTS
webapp-container   0.0.0.0:8080->80/tcp
db-container       0.0.0.0:3306->3306/tcp

这表示webapp-container容器将其内部的80端口映射到主机上的8080端口,而db-container容器将其内部的3306端口映射到主机上的3306端口。

cilium-agent

cilium-agent --config-dir=/tmp/cilium/config-map命令用于启动Cilium代理,并指定配置文件的位置。在这个例子中,Cilium代理将从/tmp/cilium/config-map目录中读取其配置文件。

这个配置目录通常是一个Kubernetes ConfigMap的挂载点,包含Cilium代理的配置信息。当Cilium代理启动时,它会读取这些配置文件并应用它们。这样,您可以在不重新启动代理的情况下更改代理的配置。

请注意,在这个例子中,我们使用了一个临时目录/tmp/cilium/config-map来模拟配置文件的位置。在实际使用中,您需要将此目录替换为实际的配置目录,并确保该目录包含正确的配置文件。

cilium-health-responder

以上命令启动 Cilium Health Responder 服务,并指定了以下选项:

  • --listen 4240:指定服务将侦听用于健康检查的端口号。
  • --pidfile /var/run/cilium-health-responder.pid:指定 PID 文件的位置,该文件将由服务创建以存储其进程 ID。

Kubernetes Service

以下是一个使用 Cilium 暴露接口服务的 Kubernetes Service 的 YAML 配置文件示例:

apiVersion: v1
kind: Service
metadata:
  name: my-cilium-api-service
spec:
  selector:
    app: my-api-app
  ports:
    - name: http
      protocol: TCP
      port: 8080
      targetPort: 8080
  type: ClusterIP
  annotations:
    io.cilium/service-loadbalancer: "true"
    io.cilium/proxy-protocol: "true"
    io.cilium/http-host: "example.com"

在这个示例中,metadata.name 字段指定了 Service 的名称,spec.selector.app 字段指定了要使用该 Service 的后端 Pod 的标签选择器。spec.ports 字段指定了 Service 要暴露的端口,其中 port 字段指定了 Service 暴露的端口号,targetPort 字段指定了后端 Pod 要监听的端口号。

注意,这个 Service 的 type 字段设置为 ClusterIP,表示这是一个集群内部的 Service。同时,annotations.io.cilium/service-loadbalancer 字段设置为 true,表示使用 Cilium 的 L4 负载均衡器来暴露服务。annotations.io.cilium/proxy-protocol 字段设置为 true,表示启用代理协议,以便在负载均衡器和后端 Pod 之间传递客户端的源 IP 地址。annotations.io.cilium/http-host 字段指定了此服务的主机名,用于 HTTP 请求的主机头部。

参数!!!

cilium endpoint-queue-size: “300”

cilium endpoint-queue-size: "300"是一个Cilium代理的配置选项,用于设置Cilium代理中的端点队列大小。Cilium是一个开源的网络和安全解决方案,为基于容器的应用程序提供网络和安全功能。Cilium代理是Cilium的核心组件,用于处理网络流量和执行安全策略。通过设置cilium endpoint-queue-size选项,可以控制Cilium代理中端点队列的大小,这有助于优化网络性能和减少网络延迟。在设置此选项时,需要考虑网络负载和代理资源的限制,以确保代理能够正常工作并提供可靠的网络和安全功能。

cilium debug:false

cilium debug:false是一个Cilium代理的配置选项,用于禁用Cilium代理的调试模式。Cilium是一个开源的网络和安全解决方案,为基于容器的应用程序提供网络和安全功能。Cilium代理是Cilium的核心组件,用于处理网络流量和执行安全策略。通过设置cilium debug选项,可以启用或禁用Cilium代理的调试模式。将debug设置为false将禁用调试模式,这有助于提高代理的性能和可靠性,并减少代理的资源占用。在禁用调试模式时,需要注意确保代理的配置和运行环境正确,以确保代理能够正常工作并提供可靠的网络和安全功能。

cilium endpoint-queue-size 设置多大合适

Cilium 的 endpoint-queue-size 参数用于设置每个节点上 Cilium 代理的端点队列的大小。这个值需要根据你的实际环境和负载来确定。

如果队列太小,可能会导致丢失数据包,从而影响网络性能和可靠性。如果队列太大,会占用过多的内存,从而影响系统的稳定性和性能。

建议根据以下因素来确定 endpoint-queue-size 的值:

  • 网络负载:如果你的网络负载很高,需要设置较大的队列大小,以确保数据包不会丢失。
  • 硬件资源:如果你的节点硬件资源有限,需要设置较小的队列大小,以避免占用过多的内存。
  • 应用程序需求:如果你的应用程序需要快速响应,需要设置较小的队列大小,以减少延迟。

一般来说,建议将 endpoint-queue-size 设置为每个节点的内存总量的 10% 左右。例如,如果节点的内存总量为 8GB,则可以将 endpoint-queue-size 设置为 800MB。如果你的网络负载较轻,也可以将该值设置为更小的值,例如 100MB。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值