Cilium 命令
以下是一些常用的 Cilium 命令:
-
cilium status
: 显示 Cilium 的状态信息,包括节点、代理、网络等信息。 -
cilium endpoint list
: 显示所有的 Cilium 端点信息。 -
cilium policy list
: 显示所有的 Cilium 策略信息。 -
cilium network list
: 显示所有的 Cilium 网络信息。 -
cilium service list
: 显示所有的 Cilium 服务信息。 -
cilium monitor
: 启动 Cilium 监视器,可以监视网络流量、策略等信息。 -
cilium install
: 安装 Cilium。 -
cilium uninstall
: 卸载 Cilium。 -
cilium help
: 显示 Cilium 帮助信息。
以上是一些常用的 Cilium 命令,还有更多命令可以通过 cilium --help
查看。
cilium
CLI for interacting with the local Cilium AgentUsage:cilium [command]Available Commands:bpf Direct access to local BPF mapscleanup Remove system state installed by Cilium at runtimecompletion Output shell completion codeconfig Cilium configuration optionsdebuginfo Request available debugging information from agentendpoint Manage endpointsfqdn Manage fqdn proxyhelp Help about any commandidentity Manage security identitiesip Manage IP addresses and associated informationkvstore Direct access to the kvstorelrp Manage local redirect policiesmap Access userspace cached content of BPF mapsmetrics Access metric statusmonitor Display BPF program eventsnode Manage cluster nodespolicy Manage security policiesprefilter Manage XDP CIDR filterspreflight cilium upgrade helperrecorder Introspect or mangle pcap recorderservice Manage services & loadbalancersstatus Display status of daemonversion Print version informationFlags:--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 APIUse "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 的整体状态以及各个组件的状态信息,有助于您快速定位和解决问题。
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请求:
-
cilium_api_server_request_duration_seconds:这个指标记录了Cilium API服务器处理请求的时间。这个指标可以用来监视API服务器的性能。
-
cilium_api_server_request_total:这个指标记录了Cilium API服务器处理的请求数量。这个指标可以用来监视API服务器的负载。
-
cilium_controller_cache_sync_duration_seconds:这个指标记录了Cilium控制器同步缓存的时间。这个指标可以用来监视控制器的性能。
-
cilium_controller_cache_sync_total:这个指标记录了Cilium控制器同步缓存的次数。这个指标可以用来监视控制器的负载。
-
cilium_controller_cache_update_duration_seconds:这个指标记录了Cilium控制器更新缓存的时间。这个指标可以用来监视控制器的性能。
-
cilium_controller_cache_update_total:这个指标记录了Cilium控制器更新缓存的次数。这个指标可以用来监视控制器的负载。
-
cilium_controller_endpoint_sync_duration_seconds:这个指标记录了Cilium控制器同步终端的时间。这个指标可以用来监视控制器的性能。
-
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 的状态,通常是ready
或not 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解读:
-
Cilium版本信息:debuginfo中包含了Cilium的版本信息,包括版本号、构建时间、Git提交ID等。这些信息可以帮助管理员确定Cilium的版本和构建信息,以便更好地进行调试和故障排除。
-
Cilium节点信息:debuginfo中包含了Cilium节点的信息,包括节点名称、IP地址、操作系统信息、内核版本等。这些信息可以帮助管理员了解Cilium集群的节点信息,以便更好地进行调试和故障排除。
-
Cilium配置信息:debuginfo中包含了Cilium的配置信息,包括网络策略、安全策略、服务发现等。这些信息可以帮助管理员了解Cilium集群的配置信息,以便更好地进行调试和故障排除。
-
Cilium运行状态信息:debuginfo中包含了Cilium的运行状态信息,包括Cilium代理的运行状态、网络策略的应用情况、集群中的流量情况等。这些信息可以帮助管理员了解Cilium集群的运行状态,以便更好地进行调试和故障排除。
-
Cilium日志信息:debuginfo中包含了Cilium的日志信息,包括Cilium代理的日志、控制器的日志等。这些信息可以帮助管理员了解Cilium集群的运行情况,以便更好地进行调试和故障排除。
Cilium debuginfo是一个非常有用的工具,可以帮助管理员快速了解Cilium集群的运行情况和故障排除。
查看调用cilium endpoint-delete API接口
要查看谁在调用cilium endpoint-delete API接口,可以使用以下步骤:
-
在Cilium节点上启用audit日志记录,以记录所有API请求和响应。在Cilium文档中,有关于如何启用audit日志记录的详细说明。
-
查看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类型的监视器,则可以尝试使用其他类型的监视器,例如capture
或debug
。例如,以下命令将使用capture
类型的监视器来查看Cilium的网络流量:
$ sudo cilium monitor -t capture
- 在audit日志中查找与endpoint-delete API相关的条目。可以使用grep和其他文本搜索工具来查找特定的API请求。例如,以下命令将查找所有调用endpoint-delete API的请求:
$ sudo cilium monitor -t audit | grep endpoint-delete
- 在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-appports:- name: httpprotocol: TCPport: 8080targetPort: 8080type: ClusterIPannotations: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 请求的主机头部。