一个基于 MCP(Model Control Protocol)的 Kubernetes 服务器,支持通过 MCP 工具与 Kubernetes 集群进行交互。
地址:https://github.com/silenceper/mcp-k8s
特性
-
查询支持的
Kubernetes
资源类型(内置资源和CRD
) -
对
Kubernetes
资源执行CRUD
操作 -
可配置的写操作(创建/更新/删除可以独立启用/禁用)
-
使用
kubeconfig
连接到Kubernetes
集群
架构
1. 项目概述
一个支持 stdio/sse
的 MCP
服务器,连接到 Kubernetes
集群并提供以下功能:
-
查询
Kubernetes
资源类型(包括内置资源和CRD
) -
对
Kubernetes
资源进行CRUD
操作(可配置写操作)
2. 技术栈
-
Go
-
mcp-go SDK
-
Kubernetes
client-go
库
3. 核心组件
-
MCP 服务器:使用
mcp-go
的server
包创建支持stdio
/sse
的MCP
服务器 -
K8s 客户端:使用
client-go
连接到Kubernetes
集群 -
工具实现:实现各种
MCP
工具用于不同的Kubernetes
操作
4. 可用工具
资源类型查询工具
-
get_api_resources
:获取集群中所有支持的API
资源类型
资源操作工具
-
get_resource
:获取特定资源的详细信息 -
list_resources
:列出资源类型的所有实例 -
create_resource
:创建新资源(可禁用) -
update_resource
:更新现有资源(可禁用) -
delete_resource
:删除资源(可禁用)
使用方式
mcp-k8s
支持两种通信模式:
1. Stdio 模式(默认)
在 stdio
模式下,mcp-k8s
通过标准输入/输出流与客户端通信。这是默认模式,适合大多数使用场景。
# 以 stdio 模式运行(默认)
{
"mcpServers":
{
"mcp-k8s":
{
"command": "/path/to/mcp-k8s",
"args":
[
"-kubeconfig",
"/path/to/kubeconfig",
"-enable-create",
"-enable-delete",
"-enable-update",
"-enable-list"
]
}
}
}
2. SSE 模式
在 SSE
(Server-Sent Events
)模式下,mcp-k8s
向 mcp
客户端暴露 HTTP
端点。
您可以将服务部署在远程服务器上(但需要注意安全性)。
# 以 SSE 模式运行,此命令将启用所有操作
./bin/mcp-k8s -kubeconfig=/path/to/kubeconfig -transport=sse -port=8080 -host=localhost -enable-create -enable-delete -enable-list -enable-update
mcp 配置
{
"mcpServers": {
"mcp-k8s": {
"url": "http://localhost:8080/sse",
"args": []
}
}
}
命令行参数说明:
-
-kubeconfig
:Kubernetes 配置文件路径(如果未指定则使用默认配置) -
-enable-create
:启用资源创建操作(默认:false) -
-enable-update
:启用资源更新操作(默认:false) -
-enable-delete
:启用资源删除操作(默认:false) -
-enable-list
:启用资源列表操作(默认:true) -
-transport
:传输类型(stdio 或 sse)(默认:"stdio") -
-host
:SSE 传输的主机(默认 "localhost") -
-port
:SSE 传输的 TCP 端口(默认 8080)
Demo
1. 下载 release
地址:https://github.com/silenceper/mcp-k8s/releases
。
目前最新的版本是 1.0.2
。笔者是 Mac
电脑,因此下载了mcp-k8s_darwin_arm64
文件。大家请根据电脑类型下载相应的二进制文件。
2. mcp-k8s 运行
只开启获取资源列表的功能。
./mcp-k8s_darwin_arm64 -kubeconfig="/Users/xxx/.kube/config" -transport=sse -port=9999 -host=localhost -enable-list
输出如下:
Registering basic tools...
Starting Kubernetes MCP Server with sse transport on localhost:9999
Create operations: false
Update operations: false
Delete operations: false
List operations: true
Server started, waiting for MCP client connections...
3. Client 代码
Client
包含了多轮对话,client.py 代码如下:
from mcp import ClientSession
from mcp.client.sse import sse_client
from langchain_mcp_adapters.tools import load_mcp_tools
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
from langchain_core.messages import AIMessage, ToolMessage, HumanMessage
import asyncio
import sys
model = ChatOpenAI(model="deepseek-chat")
# 你可以在这里自定义多轮提问
QUESTIONS = [
"我的 K8s 集群有几个节点?",
"我的集群有哪些 Pods?"
]
# 输出 Agent 和模型交互信息
def print_step_debug(step):
messages = step.get("messages", [])
print("\n--- 🧠 Agent 思考过程 ---")
for msg in messages:
if isinstance(msg, HumanMessage):
print(f"👤 User: {msg.content}")
elif isinstance(msg, AIMessage):
if msg.tool_calls:
print(f"🤖 Thought: {msg.content.strip() if msg.content else '(工具调用阶段省略内容)'}")
for call in msg.tool_calls:
print(f"🔧 Tool Call: {call['name']}")
print(f" Input: {call['args']}")
else:
print(f"💬 Final Answer: {msg.content.strip()}")
elif isinstance(msg, ToolMessage):
print(f"📦 Tool Output (id={msg.tool_call_id}): {msg.content.strip()}")
async def run_agent():
server_url = sys.argv[1] if len(sys.argv) > 1 else "http://localhost:8080/sse"
async with sse_client(url=server_url) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await load_mcp_tools(session)
agent = create_react_agent(model, tools)
for question in QUESTIONS:
print(f"\n====================")
print(f"📝 Question: {question}")
result = await agent.ainvoke({"messages": question})
print_step_debug(result)
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: python client.py <SSE_SERVER_URL>")
sys.exit(1)
asyncio.run(run_agent())
4. 运行 Client
requirements.txt
文件:
langchain-mcp-adapters>=0.1.0
langgraph>=0.1.0
langchain-openai>=0.1.0
uvicorn[standard]>=0.29.0
httpx>=0.27.0
python-dotenv>=1.0.0
运行客户端:
python3 -m venv MCP_Demo
source MCP_Demo/bin/activate
# 使用requirements文件安装依赖
pip install -r requirements.txt
export OPENAI_API_BASE=https://api.deepseek.com/v1
export OPENAI_API_KEY=sk-xxx
python client.py http://localhost:9999/sse
输出:
====================
📝 Question: 我的 K8s 集群有几个节点?
--- 🧠 Agent 思考过程 ---
👤 User: 我的 K8s 集群有几个节点?
🤖 Thought: (工具调用阶段省略内容)
🔧 Tool Call: list_resources
Input: {'kind': 'Node'}
📦 Tool Output (id=call_0_f1674d42-783c-47ad-86a3-eab8e88e8855): [{"apiVersion":"v1","kind":"Node","metadata":{"annotations":{"kubeadm.alpha.kubernetes.io/cri-socket":"unix:///var/run/cri-dockerd.sock","node.alpha.kubernetes.io/ttl":"0","volumes.kubernetes.io/controller-managed-attach-detach":"true"},"creationTimestamp":"2025-04-15T14:17:36Z","labels":{"beta.kubernetes.io/arch":"arm64","beta.kubernetes.io/os":"linux","kubernetes.io/arch":"arm64","kubernetes.io/hostname":"docker-desktop","kubernetes.io/os":"linux","node-role.kubernetes.io/control-plane":"","node.kubernetes.io/exclude-from-external-load-balancers":""},"managedFields":[{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:volumes.kubernetes.io/controller-managed-attach-detach":{}},"f:labels":{".":{},"f:beta.kubernetes.io/arch":{},"f:beta.kubernetes.io/os":{},"f:kubernetes.io/arch":{},"f:kubernetes.io/hostname":{},"f:kubernetes.io/os":{}}}},"manager":"kubelet","operation":"Update","time":"2025-04-15T14:17:36Z"},{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{"f:kubeadm.alpha.kubernetes.io/cri-socket":{}},"f:labels":{"f:node-role.kubernetes.io/control-plane":{},"f:node.kubernetes.io/exclude-from-external-load-balancers":{}}}},"manager":"kubeadm","operation":"Update","time":"2025-04-15T14:17:38Z"},{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{"f:node.alpha.kubernetes.io/ttl":{}}},"f:spec":{"f:taints":{}}},"manager":"kube-controller-manager","operation":"Update","time":"2025-04-15T14:18:07Z"},{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:conditions":{"k:{\"type\":\"DiskPressure\"}":{"f:lastHeartbeatTime":{},"f:lastTransitionTime":{},"f:message":{},"f:reason":{},"f:status":{}},"k:{\"type\":\"MemoryPressure\"}":{"f:lastHeartbeatTime":{}},"k:{\"type\":\"PIDPressure\"}":{"f:lastHeartbeatTime":{}},"k:{\"type\":\"Ready\"}":{"f:lastHeartbeatTime":{},"f:lastTransitionTime":{},"f:message":{},"f:reason":{},"f:status":{}}},"f:images":{}}},"manager":"kubelet","operation":"Update","subresource":"status","time":"2025-04-15T15:36:17Z"}],"name":"docker-desktop","resourceVersion":"4364","uid":"33f9055c-2ae1-464b-8427-6a006c2c7ead"},"spec":{"taints":[{"effect":"NoSchedule","key":"node.kubernetes.io/disk-pressure","timeAdded":"2025-04-15T14:18:07Z"}]},"status":{"addresses":[{"address":"192.168.65.3","type":"InternalIP"},{"address":"docker-desktop","type":"Hostname"}],"allocatable":{"cpu":"8","ephemeral-storage":"56403987978","hugepages-1Gi":"0","hugepages-2Mi":"0","hugepages-32Mi":"0","hugepages-64Ki":"0","memory":"7923300Ki","pods":"110"},"capacity":{"cpu":"8","ephemeral-storage":"61202244Ki","hugepages-1Gi":"0","hugepages-2Mi":"0","hugepages-32Mi":"0","hugepages-64Ki":"0","memory":"8025700Ki","pods":"110"},"conditions":[{"lastHeartbeatTime":"2025-04-15T15:36:17Z","lastTransitionTime":"2025-04-15T14:17:35Z","message":"kubelet has sufficient memory available","reason":"KubeletHasSufficientMemory","status":"False","type":"MemoryPressure"},{"lastHeartbeatTime":"2025-04-15T15:36:17Z","lastTransitionTime":"2025-04-15T14:18:07Z","message":"kubelet has disk pressure","reason":"KubeletHasDiskPressure","status":"True","type":"DiskPressure"},{"lastHeartbeatTime":"2025-04-15T15:36:17Z","lastTransitionTime":"2025-04-15T14:17:35Z","message":"kubelet has sufficient PID available","reason":"KubeletHasSufficientPID","status":"False","type":"PIDPressure"},{"lastHeartbeatTime":"2025-04-15T15:36:17Z","lastTransitionTime":"2025-04-15T14:17:36Z","message":"kubelet is posting ready status","reason":"KubeletReady","status":"True","type":"Ready"}],"daemonEndpoints":{"kubeletEndpoint":{"Port":10250}},"images":[{"names":["ghcr.io/open-webui/open-webui@sha256:b2c83b5c7b9b244999307b4b1c0e195d41268f3d3a62b84b470c0cea5c5743fd"],"sizeBytes":3729336780},{"names":["jenkins/jenkins@sha256:f2e76ce1ba8d7b357f79a6f174b6696d3ede0cd9c323c5bd7347bf945807ac29","jenkins/jenkins:latest"],"sizeBytes":497797573},{"names":["moby/buildkit@sha256:33fe47b4c06972ac6720a7ee34d6fdea3b61972f81bcc9b1f73e46ed2a090fa1","moby/buildkit:buildx-stable-1"],"sizeBytes":205655301},{"names":["registry.k8s.io/etcd:3.5.16-0"],"sizeBytes":142164164},{"names":["registry.k8s.io/kube-proxy:v1.32.2"],"sizeBytes":97052955},{"names":["registry.k8s.io/kube-apiserver:v1.32.2"],"sizeBytes":93932810},{"names":["registry.k8s.io/kube-controller-manager:v1.32.2"],"sizeBytes":87183043},{"names":["registry.k8s.io/kube-scheduler:v1.32.2"],"sizeBytes":67915368},{"names":["registry.k8s.io/coredns/coredns:v1.11.3"],"sizeBytes":60192455},{"names":["registry.k8s.io/pause:3.10"],"sizeBytes":514000}],"nodeInfo":{"architecture":"arm64","bootID":"6211ebca-427e-40b7-8516-3636590364f8","containerRuntimeVersion":"docker://28.0.4","kernelVersion":"6.10.14-linuxkit","kubeProxyVersion":"v1.32.2","kubeletVersion":"v1.32.2","machineID":"260a52cd-6b1b-4969-a796-5c5055232de4","operatingSystem":"linux","osImage":"Docker Desktop","systemUUID":"260a52cd-6b1b-4969-a796-5c5055232de4"}}}]
💬 Final Answer: 您的 Kubernetes 集群当前有 **1 个节点**,节点名称为 `docker-desktop`。
====================
📝 Question: 我的集群有哪些 Pods?
--- 🧠 Agent 思考过程 ---
👤 User: 我的集群有哪些 Pods?
🤖 Thought: (工具调用阶段省略内容)
🔧 Tool Call: list_resources
Input: {'kind': 'Pod'}
📦 Tool Output (id=call_0_1fd71ef5-bec1-4f22-91ba-27f951ea8219): [{"apiVersion":"v1","kind":"Pod","metadata":{"creationTimestamp":"2025-04-15T14:17:44Z","generateName":"coredns-668d6bf9bc-","labels":{"k8s-app":"kube-dns","pod-template-hash":"668d6bf9bc"},"managedFields":[{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:generateName":{},"f:labels":{".":{},"f:k8s-app":{},"f:pod-template-hash":{}},"f:ownerReferences":{".":{},"k:{\"uid\":\"c59aed62-9cc4-4e60-8a3f-6e6a71aa186d\"}":{}}},"f:spec":{"f:affinity":{".":{},"f:podAntiAffinity":{".":{},"f:preferredDuringSchedulingIgnoredDuringExecution":{}}},"f:containers":{"k:{\"name\":\"coredns\"}":{".":{},"f:args":{},"f:image":{},"f:imagePullPolicy":{},"f:livenessProbe":{".":{},"f:failureThreshold":{},"f:httpGet":{".":{},"f:path":{},"f:port":{},"f:scheme":{}},"f:initialDelaySeconds":{},"f:periodSeconds":{},"f:successThreshold":{},"f:timeoutSeconds":{}},"f:name":{},"f:ports":{".":{},"k:{\"containerPort\":53,\"protocol\":\"TCP\"}":{".":{},"f:containerPort":{},"f:name":{},"f:protocol":{}},"k:{\"containerPort\":53,\"protocol\":\"UDP\"}":{".":{},"f:containerPort":{},"f:name":{},"f:protocol":{}},"k:{\"containerPort\":9153,\"protocol\":\"TCP\"}":{".":{},"f:containerPort":{},"f:name":{},"f:protocol":{}}},"f:readinessProbe":{".":{},"f:failureThreshold":{},"f:httpGet":{".":{},"f:path":{},"f:port":{},"f:scheme":{}},"f:periodSeconds":{},"f:successThreshold":{},"f:timeoutSeconds":{}},"f:resources":{".":{},"f:limits":{".":{},"f:memory":{}},"f:requests":{".":{},"f:cpu":{},"f:memory":{}}},"f:securityContext":{".":{},"f:allowPrivilegeEscalation":{},"f:capabilities":{".":{},"f:add":{},"f:drop":{}},"f:readOnlyRootFilesystem":{}},"f:terminationMessagePath":{},"f:terminationMessagePolicy":{},"f:volumeMounts":{".":{},"k:{\"mountPath\":\"/etc/coredns\"}":{".":{},"f:mountPath":{},"f:name":{},"f:readOnly":{}}}}},"f:dnsPolicy":{},"f:enableServiceLinks":{},"f:nodeSelector":{},"f:priorityClassName":{},"f:restartPolicy":{},"f:schedulerName":{},"f:securityContext":{},"f:serviceAccount":{},"f:serviceAccountName":{},"f:terminationGracePeriodSeconds":{},"f:tolerations":{},"f:volumes":{".":{},"k:{\"name\":\"config-volume\"}":{".":{},"f:configMap":{".":{},"f:defaultMode":{},"f:items":{},"f:name":{}},"f:name":{}}}}},"manager":"kube-controller-manager","operation":"Update","time":"2025-04-15T14:17:44Z"},{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:conditions":{"k:{\"type\":\"ContainersReady\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Initialized\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"PodReadyToStartContainers\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Ready\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}}},"f:containerStatuses":{},"f:hostIP":{},"f:hostIPs":{},"f:phase":{},"f:podIP":{},"f:podIPs":{".":{},"k:{\"ip\":\"10.1.2.55\"}":{".":{},"f:ip":{}}},"f:startTime":{}}},"manager":"kubelet","operation":"Update","subresource":"status","time":"2025-04-15T14:17:46Z"}],"name":"coredns-668d6bf9bc-67xfh","namespace":"kube-system","ownerReferences":[{"apiVersion":"apps/v1","blockOwnerDeletion":true,"controller":true,"kind":"ReplicaSet","name":"coredns-668d6bf9bc","uid":"c59aed62-9cc4-4e60-8a3f-6e6a71aa186d"}],"resourceVersion":"400","uid":"9ace2c5f-5e3e-4302-b44b-9f6bdc2db935"},"spec":{"affinity":{"podAntiAffinity":{"preferredDuringSchedulingIgnoredDuringExecution":[{"podAffinityTerm":{"labelSelector":{"matchExpressions":[{"key":"k8s-app","operator":"In","values":["kube-dns"]}]},"topologyKey":"kubernetes.io/hostname"},"weight":100}]}},"containers":[{"args":["-conf","/etc/coredns/Corefile"],"image":"registry.k8s.io/coredns/coredns:v1.11.3","imagePullPolicy":"IfNotPresent","livenessProbe":{"failureThreshold":5,"httpGet":{"path":"/health","port":8080,"scheme":"HTTP"},"initialDelaySeconds":60,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":5},"name":"coredns","ports":[{"containerPort":53,"name":"dns","protocol":"UDP"},{"containerPort":53,"name":"dns-tcp","protocol":"TCP"},{"containerPort":9153,"name":"metrics","protocol":"TCP"}],"readinessProbe":{"failureThreshold":3,"httpGet":{"path":"/ready","port":8181,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1},"resources":{"limits":{"memory":"170Mi"},"requests":{"cpu":"100m","memory":"70Mi"}},"securityContext":{"allowPrivilegeEscalation":false,"capabilities":{"add":["NET_BIND_SERVICE"],"drop":["ALL"]},"readOnlyRootFilesystem":true},"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","volumeMounts":[{"mountPath":"/etc/coredns","name":"config-volume","readOnly":true},{"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount","name":"kube-api-access-nsztl","readOnly":true}]}],"dnsPolicy":"Default","enableServiceLinks":true,"nodeName":"docker-desktop","nodeSelector":{"kubernetes.io/os":"linux"},"preemptionPolicy":"PreemptLowerPriority","priority":2000000000,"priorityClassName":"system-cluster-critical","restartPolicy":"Always","schedulerName":"default-scheduler","securityContext":{},"serviceAccount":"coredns","serviceAccountName":"coredns","terminationGracePeriodSeconds":30,"tolerations":[{"key":"CriticalAddonsOnly","operator":"Exists"},{"effect":"NoSchedule","key":"node-role.kubernetes.io/control-plane"},{"effect":"NoExecute","key":"node.kubernetes.io/not-ready","operator":"Exists","tolerationSeconds":300},{"effect":"NoExecute","key":"node.kubernetes.io/unreachable","operator":"Exists","tolerationSeconds":300}],"volumes":[{"configMap":{"defaultMode":420,"items":[{"key":"Corefile","path":"Corefile"}],"name":"coredns"},"name":"config-volume"},{"name":"kube-api-access-nsztl","projected":{"defaultMode":420,"sources":[{"serviceAccountToken":{"expirationSeconds":3607,"path":"token"}},{"configMap":{"items":[{"key":"ca.crt","path":"ca.crt"}],"name":"kube-root-ca.crt"}},{"downwardAPI":{"items":[{"fieldRef":{"apiVersion":"v1","fieldPath":"metadata.namespace"},"path":"namespace"}]}}]}}]},"status":{"conditions":[{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:45Z","status":"True","type":"PodReadyToStartContainers"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:44Z","status":"True","type":"Initialized"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:46Z","status":"True","type":"Ready"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:46Z","status":"True","type":"ContainersReady"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:44Z","status":"True","type":"PodScheduled"}],"containerStatuses":[{"containerID":"docker://c3408990270de21b82d9aa3e2e47d7d1a7bccae64c063af8a15ff56794b69166","image":"registry.k8s.io/coredns/coredns:v1.11.3","imageID":"docker://sha256:2f6c962e7b8311337352d9fdea917da2184d9919f4da7695bc2a6517cf392fe4","lastState":{},"name":"coredns","ready":true,"restartCount":0,"started":true,"state":{"running":{"startedAt":"2025-04-15T14:17:44Z"}},"volumeMounts":[{"mountPath":"/etc/coredns","name":"config-volume","readOnly":true,"recursiveReadOnly":"Disabled"},{"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount","name":"kube-api-access-nsztl","readOnly":true,"recursiveReadOnly":"Disabled"}]}],"hostIP":"192.168.65.3","hostIPs":[{"ip":"192.168.65.3"}],"phase":"Running","podIP":"10.1.2.55","podIPs":[{"ip":"10.1.2.55"}],"qosClass":"Burstable","startTime":"2025-04-15T14:17:44Z"}},{"apiVersion":"v1","kind":"Pod","metadata":{"creationTimestamp":"2025-04-15T14:17:44Z","generateName":"coredns-668d6bf9bc-","labels":{"k8s-app":"kube-dns","pod-template-hash":"668d6bf9bc"},"managedFields":[{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:generateName":{},"f:labels":{".":{},"f:k8s-app":{},"f:pod-template-hash":{}},"f:ownerReferences":{".":{},"k:{\"uid\":\"c59aed62-9cc4-4e60-8a3f-6e6a71aa186d\"}":{}}},"f:spec":{"f:affinity":{".":{},"f:podAntiAffinity":{".":{},"f:preferredDuringSchedulingIgnoredDuringExecution":{}}},"f:containers":{"k:{\"name\":\"coredns\"}":{".":{},"f:args":{},"f:image":{},"f:imagePullPolicy":{},"f:livenessProbe":{".":{},"f:failureThreshold":{},"f:httpGet":{".":{},"f:path":{},"f:port":{},"f:scheme":{}},"f:initialDelaySeconds":{},"f:periodSeconds":{},"f:successThreshold":{},"f:timeoutSeconds":{}},"f:name":{},"f:ports":{".":{},"k:{\"containerPort\":53,\"protocol\":\"TCP\"}":{".":{},"f:containerPort":{},"f:name":{},"f:protocol":{}},"k:{\"containerPort\":53,\"protocol\":\"UDP\"}":{".":{},"f:containerPort":{},"f:name":{},"f:protocol":{}},"k:{\"containerPort\":9153,\"protocol\":\"TCP\"}":{".":{},"f:containerPort":{},"f:name":{},"f:protocol":{}}},"f:readinessProbe":{".":{},"f:failureThreshold":{},"f:httpGet":{".":{},"f:path":{},"f:port":{},"f:scheme":{}},"f:periodSeconds":{},"f:successThreshold":{},"f:timeoutSeconds":{}},"f:resources":{".":{},"f:limits":{".":{},"f:memory":{}},"f:requests":{".":{},"f:cpu":{},"f:memory":{}}},"f:securityContext":{".":{},"f:allowPrivilegeEscalation":{},"f:capabilities":{".":{},"f:add":{},"f:drop":{}},"f:readOnlyRootFilesystem":{}},"f:terminationMessagePath":{},"f:terminationMessagePolicy":{},"f:volumeMounts":{".":{},"k:{\"mountPath\":\"/etc/coredns\"}":{".":{},"f:mountPath":{},"f:name":{},"f:readOnly":{}}}}},"f:dnsPolicy":{},"f:enableServiceLinks":{},"f:nodeSelector":{},"f:priorityClassName":{},"f:restartPolicy":{},"f:schedulerName":{},"f:securityContext":{},"f:serviceAccount":{},"f:serviceAccountName":{},"f:terminationGracePeriodSeconds":{},"f:tolerations":{},"f:volumes":{".":{},"k:{\"name\":\"config-volume\"}":{".":{},"f:configMap":{".":{},"f:defaultMode":{},"f:items":{},"f:name":{}},"f:name":{}}}}},"manager":"kube-controller-manager","operation":"Update","time":"2025-04-15T14:17:44Z"},{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:conditions":{"k:{\"type\":\"ContainersReady\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Initialized\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"PodReadyToStartContainers\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Ready\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}}},"f:containerStatuses":{},"f:hostIP":{},"f:hostIPs":{},"f:phase":{},"f:podIP":{},"f:podIPs":{".":{},"k:{\"ip\":\"10.1.2.56\"}":{".":{},"f:ip":{}}},"f:startTime":{}}},"manager":"kubelet","operation":"Update","subresource":"status","time":"2025-04-15T14:17:46Z"}],"name":"coredns-668d6bf9bc-ksg4k","namespace":"kube-system","ownerReferences":[{"apiVersion":"apps/v1","blockOwnerDeletion":true,"controller":true,"kind":"ReplicaSet","name":"coredns-668d6bf9bc","uid":"c59aed62-9cc4-4e60-8a3f-6e6a71aa186d"}],"resourceVersion":"404","uid":"9daeae0a-5fbe-4764-935d-aa22bd9dc7e1"},"spec":{"affinity":{"podAntiAffinity":{"preferredDuringSchedulingIgnoredDuringExecution":[{"podAffinityTerm":{"labelSelector":{"matchExpressions":[{"key":"k8s-app","operator":"In","values":["kube-dns"]}]},"topologyKey":"kubernetes.io/hostname"},"weight":100}]}},"containers":[{"args":["-conf","/etc/coredns/Corefile"],"image":"registry.k8s.io/coredns/coredns:v1.11.3","imagePullPolicy":"IfNotPresent","livenessProbe":{"failureThreshold":5,"httpGet":{"path":"/health","port":8080,"scheme":"HTTP"},"initialDelaySeconds":60,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":5},"name":"coredns","ports":[{"containerPort":53,"name":"dns","protocol":"UDP"},{"containerPort":53,"name":"dns-tcp","protocol":"TCP"},{"containerPort":9153,"name":"metrics","protocol":"TCP"}],"readinessProbe":{"failureThreshold":3,"httpGet":{"path":"/ready","port":8181,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1},"resources":{"limits":{"memory":"170Mi"},"requests":{"cpu":"100m","memory":"70Mi"}},"securityContext":{"allowPrivilegeEscalation":false,"capabilities":{"add":["NET_BIND_SERVICE"],"drop":["ALL"]},"readOnlyRootFilesystem":true},"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","volumeMounts":[{"mountPath":"/etc/coredns","name":"config-volume","readOnly":true},{"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount","name":"kube-api-access-zwfgj","readOnly":true}]}],"dnsPolicy":"Default","enableServiceLinks":true,"nodeName":"docker-desktop","nodeSelector":{"kubernetes.io/os":"linux"},"preemptionPolicy":"PreemptLowerPriority","priority":2000000000,"priorityClassName":"system-cluster-critical","restartPolicy":"Always","schedulerName":"default-scheduler","securityContext":{},"serviceAccount":"coredns","serviceAccountName":"coredns","terminationGracePeriodSeconds":30,"tolerations":[{"key":"CriticalAddonsOnly","operator":"Exists"},{"effect":"NoSchedule","key":"node-role.kubernetes.io/control-plane"},{"effect":"NoExecute","key":"node.kubernetes.io/not-ready","operator":"Exists","tolerationSeconds":300},{"effect":"NoExecute","key":"node.kubernetes.io/unreachable","operator":"Exists","tolerationSeconds":300}],"volumes":[{"configMap":{"defaultMode":420,"items":[{"key":"Corefile","path":"Corefile"}],"name":"coredns"},"name":"config-volume"},{"name":"kube-api-access-zwfgj","projected":{"defaultMode":420,"sources":[{"serviceAccountToken":{"expirationSeconds":3607,"path":"token"}},{"configMap":{"items":[{"key":"ca.crt","path":"ca.crt"}],"name":"kube-root-ca.crt"}},{"downwardAPI":{"items":[{"fieldRef":{"apiVersion":"v1","fieldPath":"metadata.namespace"},"path":"namespace"}]}}]}}]},"status":{"conditions":[{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:44Z","status":"True","type":"PodReadyToStartContainers"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:44Z","status":"True","type":"Initialized"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:46Z","status":"True","type":"Ready"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:46Z","status":"True","type":"ContainersReady"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:44Z","status":"True","type":"PodScheduled"}],"containerStatuses":[{"containerID":"docker://e9208056d139d526a9e84595a49aa542f02d772fa9b620b4a8f68bc34b87b9b3","image":"registry.k8s.io/coredns/coredns:v1.11.3","imageID":"docker://sha256:2f6c962e7b8311337352d9fdea917da2184d9919f4da7695bc2a6517cf392fe4","lastState":{},"name":"coredns","ready":true,"restartCount":0,"started":true,"state":{"running":{"startedAt":"2025-04-15T14:17:44Z"}},"volumeMounts":[{"mountPath":"/etc/coredns","name":"config-volume","readOnly":true,"recursiveReadOnly":"Disabled"},{"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount","name":"kube-api-access-zwfgj","readOnly":true,"recursiveReadOnly":"Disabled"}]}],"hostIP":"192.168.65.3","hostIPs":[{"ip":"192.168.65.3"}],"phase":"Running","podIP":"10.1.2.56","podIPs":[{"ip":"10.1.2.56"}],"qosClass":"Burstable","startTime":"2025-04-15T14:17:44Z"}},{"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{"kubeadm.kubernetes.io/etcd.advertise-client-urls":"https://192.168.65.3:2379","kubernetes.io/config.hash":"7779af46bf0a91fe6ec7c175258b1edd","kubernetes.io/config.mirror":"7779af46bf0a91fe6ec7c175258b1edd","kubernetes.io/config.seen":"2025-04-15T14:17:33.749032383Z","kubernetes.io/config.source":"file"},"creationTimestamp":"2025-04-15T14:17:45Z","labels":{"component":"etcd","tier":"control-plane"},"managedFields":[{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:kubeadm.kubernetes.io/etcd.advertise-client-urls":{},"f:kubernetes.io/config.hash":{},"f:kubernetes.io/config.mirror":{},"f:kubernetes.io/config.seen":{},"f:kubernetes.io/config.source":{}},"f:labels":{".":{},"f:component":{},"f:tier":{}},"f:ownerReferences":{".":{},"k:{\"uid\":\"33f9055c-2ae1-464b-8427-6a006c2c7ead\"}":{}}},"f:spec":{"f:containers":{"k:{\"name\":\"etcd\"}":{".":{},"f:command":{},"f:image":{},"f:imagePullPolicy":{},"f:livenessProbe":{".":{},"f:failureThreshold":{},"f:httpGet":{".":{},"f:host":{},"f:path":{},"f:port":{},"f:scheme":{}},"f:initialDelaySeconds":{},"f:periodSeconds":{},"f:successThreshold":{},"f:timeoutSeconds":{}},"f:name":{},"f:readinessProbe":{".":{},"f:failureThreshold":{},"f:httpGet":{".":{},"f:host":{},"f:path":{},"f:port":{},"f:scheme":{}},"f:periodSeconds":{},"f:successThreshold":{},"f:timeoutSeconds":{}},"f:resources":{".":{},"f:requests":{".":{},"f:cpu":{},"f:memory":{}}},"f:startupProbe":{".":{},"f:failureThreshold":{},"f:httpGet":{".":{},"f:host":{},"f:path":{},"f:port":{},"f:scheme":{}},"f:initialDelaySeconds":{},"f:periodSeconds":{},"f:successThreshold":{},"f:timeoutSeconds":{}},"f:terminationMessagePath":{},"f:terminationMessagePolicy":{},"f:volumeMounts":{".":{},"k:{\"mountPath\":\"/run/config/pki/etcd\"}":{".":{},"f:mountPath":{},"f:name":{}},"k:{\"mountPath\":\"/var/lib/etcd\"}":{".":{},"f:mountPath":{},"f:name":{}}}}},"f:dnsPolicy":{},"f:enableServiceLinks":{},"f:hostNetwork":{},"f:nodeName":{},"f:priority":{},"f:priorityClassName":{},"f:restartPolicy":{},"f:schedulerName":{},"f:securityContext":{".":{},"f:seccompProfile":{".":{},"f:type":{}}},"f:terminationGracePeriodSeconds":{},"f:tolerations":{},"f:volumes":{".":{},"k:{\"name\":\"etcd-certs\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}},"k:{\"name\":\"etcd-data\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}}}}},"manager":"kubelet","operation":"Update","time":"2025-04-15T14:17:45Z"},{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:conditions":{".":{},"k:{\"type\":\"ContainersReady\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Initialized\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"PodReadyToStartContainers\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"PodScheduled\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Ready\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}}},"f:containerStatuses":{},"f:hostIP":{},"f:hostIPs":{},"f:phase":{},"f:podIP":{},"f:podIPs":{".":{},"k:{\"ip\":\"192.168.65.3\"}":{".":{},"f:ip":{}}},"f:startTime":{}}},"manager":"kubelet","operation":"Update","subresource":"status","time":"2025-04-15T14:17:45Z"}],"name":"etcd-docker-desktop","namespace":"kube-system","ownerReferences":[{"apiVersion":"v1","controller":true,"kind":"Node","name":"docker-desktop","uid":"33f9055c-2ae1-464b-8427-6a006c2c7ead"}],"resourceVersion":"391","uid":"a35f73c0-f1f0-4b1e-9e87-d63d1a5498bb"},"spec":{"containers":[{"command":["etcd","--advertise-client-urls=https://192.168.65.3:2379","--cert-file=/run/config/pki/etcd/server.crt","--client-cert-auth=true","--data-dir=/var/lib/etcd","--experimental-initial-corrupt-check=true","--experimental-watch-progress-notify-interval=5s","--initial-advertise-peer-urls=https://192.168.65.3:2380","--initial-cluster=docker-desktop=https://192.168.65.3:2380","--key-file=/run/config/pki/etcd/server.key","--listen-client-urls=https://127.0.0.1:2379,https://192.168.65.3:2379","--listen-metrics-urls=http://127.0.0.1:2381","--listen-peer-urls=https://192.168.65.3:2380","--name=docker-desktop","--peer-cert-file=/run/config/pki/etcd/peer.crt","--peer-client-cert-auth=true","--peer-key-file=/run/config/pki/etcd/peer.key","--peer-trusted-ca-file=/run/config/pki/etcd/ca.crt","--snapshot-count=10000","--trusted-ca-file=/run/config/pki/etcd/ca.crt"],"image":"registry.k8s.io/etcd:3.5.16-0","imagePullPolicy":"IfNotPresent","livenessProbe":{"failureThreshold":8,"httpGet":{"host":"127.0.0.1","path":"/livez","port":2381,"scheme":"HTTP"},"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":15},"name":"etcd","readinessProbe":{"failureThreshold":3,"httpGet":{"host":"127.0.0.1","path":"/readyz","port":2381,"scheme":"HTTP"},"periodSeconds":1,"successThreshold":1,"timeoutSeconds":15},"resources":{"requests":{"cpu":"100m","memory":"100Mi"}},"startupProbe":{"failureThreshold":24,"httpGet":{"host":"127.0.0.1","path":"/readyz","port":2381,"scheme":"HTTP"},"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":15},"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","volumeMounts":[{"mountPath":"/var/lib/etcd","name":"etcd-data"},{"mountPath":"/run/config/pki/etcd","name":"etcd-certs"}]}],"dnsPolicy":"ClusterFirst","enableServiceLinks":true,"hostNetwork":true,"nodeName":"docker-desktop","preemptionPolicy":"PreemptLowerPriority","priority":2000001000,"priorityClassName":"system-node-critical","restartPolicy":"Always","schedulerName":"default-scheduler","securityContext":{"seccompProfile":{"type":"RuntimeDefault"}},"terminationGracePeriodSeconds":30,"tolerations":[{"effect":"NoExecute","operator":"Exists"}],"volumes":[{"hostPath":{"path":"/run/config/pki/etcd","type":"DirectoryOrCreate"},"name":"etcd-certs"},{"hostPath":{"path":"/var/lib/etcd","type":"DirectoryOrCreate"},"name":"etcd-data"}]},"status":{"conditions":[{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:34Z","status":"True","type":"PodReadyToStartContainers"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:33Z","status":"True","type":"Initialized"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:45Z","status":"True","type":"Ready"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:45Z","status":"True","type":"ContainersReady"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:33Z","status":"True","type":"PodScheduled"}],"containerStatuses":[{"containerID":"docker://0502ce7465da26b9d1d2d6cfdce0073c961d182f189692f313b4e147ce4d2dcb","image":"registry.k8s.io/etcd:3.5.16-0","imageID":"docker://sha256:7fc9d4aa817aa6a3e549f3cd49d1f7b496407be979fc36dd5f356d59ce8c3a82","lastState":{},"name":"etcd","ready":true,"restartCount":1,"started":true,"state":{"running":{"startedAt":"2025-04-15T14:17:34Z"}},"volumeMounts":[{"mountPath":"/var/lib/etcd","name":"etcd-data"},{"mountPath":"/run/config/pki/etcd","name":"etcd-certs"}]}],"hostIP":"192.168.65.3","hostIPs":[{"ip":"192.168.65.3"}],"phase":"Running","podIP":"192.168.65.3","podIPs":[{"ip":"192.168.65.3"}],"qosClass":"Burstable","startTime":"2025-04-15T14:17:33Z"}},{"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{"kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint":"192.168.65.3:6443","kubernetes.io/config.hash":"38e3e129a91e81f2dc5057507c3ced19","kubernetes.io/config.mirror":"38e3e129a91e81f2dc5057507c3ced19","kubernetes.io/config.seen":"2025-04-15T14:17:33.749034300Z","kubernetes.io/config.source":"file"},"creationTimestamp":"2025-04-15T14:17:37Z","labels":{"component":"kube-apiserver","tier":"control-plane"},"managedFields":[{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint":{},"f:kubernetes.io/config.hash":{},"f:kubernetes.io/config.mirror":{},"f:kubernetes.io/config.seen":{},"f:kubernetes.io/config.source":{}},"f:labels":{".":{},"f:component":{},"f:tier":{}},"f:ownerReferences":{".":{},"k:{\"uid\":\"33f9055c-2ae1-464b-8427-6a006c2c7ead\"}":{}}},"f:spec":{"f:containers":{"k:{\"name\":\"kube-apiserver\"}":{".":{},"f:command":{},"f:image":{},"f:imagePullPolicy":{},"f:livenessProbe":{".":{},"f:failureThreshold":{},"f:httpGet":{".":{},"f:host":{},"f:path":{},"f:port":{},"f:scheme":{}},"f:initialDelaySeconds":{},"f:periodSeconds":{},"f:successThreshold":{},"f:timeoutSeconds":{}},"f:name":{},"f:readinessProbe":{".":{},"f:failureThreshold":{},"f:httpGet":{".":{},"f:host":{},"f:path":{},"f:port":{},"f:scheme":{}},"f:periodSeconds":{},"f:successThreshold":{},"f:timeoutSeconds":{}},"f:resources":{".":{},"f:requests":{".":{},"f:cpu":{}}},"f:startupProbe":{".":{},"f:failureThreshold":{},"f:httpGet":{".":{},"f:host":{},"f:path":{},"f:port":{},"f:scheme":{}},"f:initialDelaySeconds":{},"f:periodSeconds":{},"f:successThreshold":{},"f:timeoutSeconds":{}},"f:terminationMessagePath":{},"f:terminationMessagePolicy":{},"f:volumeMounts":{".":{},"k:{\"mountPath\":\"/etc/ca-certificates\"}":{".":{},"f:mountPath":{},"f:name":{},"f:readOnly":{}},"k:{\"mountPath\":\"/etc/ssl/certs\"}":{".":{},"f:mountPath":{},"f:name":{},"f:readOnly":{}},"k:{\"mountPath\":\"/run/config/pki\"}":{".":{},"f:mountPath":{},"f:name":{},"f:readOnly":{}},"k:{\"mountPath\":\"/usr/local/share/ca-certificates\"}":{".":{},"f:mountPath":{},"f:name":{},"f:readOnly":{}},"k:{\"mountPath\":\"/usr/share/ca-certificates\"}":{".":{},"f:mountPath":{},"f:name":{},"f:readOnly":{}}}}},"f:dnsPolicy":{},"f:enableServiceLinks":{},"f:hostNetwork":{},"f:nodeName":{},"f:priority":{},"f:priorityClassName":{},"f:restartPolicy":{},"f:schedulerName":{},"f:securityContext":{".":{},"f:seccompProfile":{".":{},"f:type":{}}},"f:terminationGracePeriodSeconds":{},"f:tolerations":{},"f:volumes":{".":{},"k:{\"name\":\"ca-certs\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}},"k:{\"name\":\"etc-ca-certificates\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}},"k:{\"name\":\"k8s-certs\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}},"k:{\"name\":\"usr-local-share-ca-certificates\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}},"k:{\"name\":\"usr-share-ca-certificates\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}}}}},"manager":"kubelet","operation":"Update","time":"2025-04-15T14:17:37Z"},{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:conditions":{".":{},"k:{\"type\":\"ContainersReady\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Initialized\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"PodReadyToStartContainers\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"PodScheduled\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Ready\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}}},"f:containerStatuses":{},"f:hostIP":{},"f:hostIPs":{},"f:phase":{},"f:podIP":{},"f:podIPs":{".":{},"k:{\"ip\":\"192.168.65.3\"}":{".":{},"f:ip":{}}},"f:startTime":{}}},"manager":"kubelet","operation":"Update","subresource":"status","time":"2025-04-15T14:17:47Z"}],"name":"kube-apiserver-docker-desktop","namespace":"kube-system","ownerReferences":[{"apiVersion":"v1","controller":true,"kind":"Node","name":"docker-desktop","uid":"33f9055c-2ae1-464b-8427-6a006c2c7ead"}],"resourceVersion":"414","uid":"fde083dc-0aba-4f3d-928c-23598ff1d5c7"},"spec":{"containers":[{"command":["kube-apiserver","--advertise-address=192.168.65.3","--allow-privileged=true","--authorization-mode=Node,RBAC","--client-ca-file=/run/config/pki/ca.crt","--enable-admission-plugins=NodeRestriction","--enable-bootstrap-token-auth=true","--etcd-cafile=/run/config/pki/etcd/ca.crt","--etcd-certfile=/run/config/pki/apiserver-etcd-client.crt","--etcd-keyfile=/run/config/pki/apiserver-etcd-client.key","--etcd-servers=https://127.0.0.1:2379","--kubelet-client-certificate=/run/config/pki/apiserver-kubelet-client.crt","--kubelet-client-key=/run/config/pki/apiserver-kubelet-client.key","--kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname","--proxy-client-cert-file=/run/config/pki/front-proxy-client.crt","--proxy-client-key-file=/run/config/pki/front-proxy-client.key","--requestheader-allowed-names=front-proxy-client","--requestheader-client-ca-file=/run/config/pki/front-proxy-ca.crt","--requestheader-extra-headers-prefix=X-Remote-Extra-","--requestheader-group-headers=X-Remote-Group","--requestheader-username-headers=X-Remote-User","--secure-port=6443","--service-account-issuer=https://kubernetes.default.svc.cluster.local","--service-account-key-file=/run/config/pki/sa.pub","--service-account-signing-key-file=/run/config/pki/sa.key","--service-cluster-ip-range=10.96.0.0/12","--tls-cert-file=/run/config/pki/apiserver.crt","--tls-private-key-file=/run/config/pki/apiserver.key","--watch-cache=false"],"image":"registry.k8s.io/kube-apiserver:v1.32.2","imagePullPolicy":"IfNotPresent","livenessProbe":{"failureThreshold":8,"httpGet":{"host":"192.168.65.3","path":"/livez","port":6443,"scheme":"HTTPS"},"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":15},"name":"kube-apiserver","readinessProbe":{"failureThreshold":3,"httpGet":{"host":"192.168.65.3","path":"/readyz","port":6443,"scheme":"HTTPS"},"periodSeconds":1,"successThreshold":1,"timeoutSeconds":15},"resources":{"requests":{"cpu":"250m"}},"startupProbe":{"failureThreshold":24,"httpGet":{"host":"192.168.65.3","path":"/livez","port":6443,"scheme":"HTTPS"},"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":15},"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","volumeMounts":[{"mountPath":"/etc/ssl/certs","name":"ca-certs","readOnly":true},{"mountPath":"/etc/ca-certificates","name":"etc-ca-certificates","readOnly":true},{"mountPath":"/run/config/pki","name":"k8s-certs","readOnly":true},{"mountPath":"/usr/local/share/ca-certificates","name":"usr-local-share-ca-certificates","readOnly":true},{"mountPath":"/usr/share/ca-certificates","name":"usr-share-ca-certificates","readOnly":true}]}],"dnsPolicy":"ClusterFirst","enableServiceLinks":true,"hostNetwork":true,"nodeName":"docker-desktop","preemptionPolicy":"PreemptLowerPriority","priority":2000001000,"priorityClassName":"system-node-critical","restartPolicy":"Always","schedulerName":"default-scheduler","securityContext":{"seccompProfile":{"type":"RuntimeDefault"}},"terminationGracePeriodSeconds":30,"tolerations":[{"effect":"NoExecute","operator":"Exists"}],"volumes":[{"hostPath":{"path":"/etc/ssl/certs","type":"DirectoryOrCreate"},"name":"ca-certs"},{"hostPath":{"path":"/etc/ca-certificates","type":"DirectoryOrCreate"},"name":"etc-ca-certificates"},{"hostPath":{"path":"/run/config/pki","type":"DirectoryOrCreate"},"name":"k8s-certs"},{"hostPath":{"path":"/usr/local/share/ca-certificates","type":"DirectoryOrCreate"},"name":"usr-local-share-ca-certificates"},{"hostPath":{"path":"/usr/share/ca-certificates","type":"DirectoryOrCreate"},"name":"usr-share-ca-certificates"}]},"status":{"conditions":[{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:35Z","status":"True","type":"PodReadyToStartContainers"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:33Z","status":"True","type":"Initialized"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:47Z","status":"True","type":"Ready"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:47Z","status":"True","type":"ContainersReady"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:33Z","status":"True","type":"PodScheduled"}],"containerStatuses":[{"containerID":"docker://d1766f1937d42d9cfe41a2c451929c24cef7f0eb89ad03648fb8b8d4d0911b5d","image":"registry.k8s.io/kube-apiserver:v1.32.2","imageID":"docker://sha256:6417e1437b6d9a789e1ca789695a574e1df00a632bdbfbcae9695c9a7d500e32","lastState":{},"name":"kube-apiserver","ready":true,"restartCount":1,"started":true,"state":{"running":{"startedAt":"2025-04-15T14:17:34Z"}},"volumeMounts":[{"mountPath":"/etc/ssl/certs","name":"ca-certs","readOnly":true,"recursiveReadOnly":"Disabled"},{"mountPath":"/etc/ca-certificates","name":"etc-ca-certificates","readOnly":true,"recursiveReadOnly":"Disabled"},{"mountPath":"/run/config/pki","name":"k8s-certs","readOnly":true,"recursiveReadOnly":"Disabled"},{"mountPath":"/usr/local/share/ca-certificates","name":"usr-local-share-ca-certificates","readOnly":true,"recursiveReadOnly":"Disabled"},{"mountPath":"/usr/share/ca-certificates","name":"usr-share-ca-certificates","readOnly":true,"recursiveReadOnly":"Disabled"}]}],"hostIP":"192.168.65.3","hostIPs":[{"ip":"192.168.65.3"}],"phase":"Running","podIP":"192.168.65.3","podIPs":[{"ip":"192.168.65.3"}],"qosClass":"Burstable","startTime":"2025-04-15T14:17:33Z"}},{"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{"kubernetes.io/config.hash":"91de249f0655ce84612a10ea4918cbe4","kubernetes.io/config.mirror":"91de249f0655ce84612a10ea4918cbe4","kubernetes.io/config.seen":"2025-04-15T14:17:33.749034925Z","kubernetes.io/config.source":"file"},"creationTimestamp":"2025-04-15T14:17:41Z","labels":{"component":"kube-controller-manager","tier":"control-plane"},"managedFields":[{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:kubernetes.io/config.hash":{},"f:kubernetes.io/config.mirror":{},"f:kubernetes.io/config.seen":{},"f:kubernetes.io/config.source":{}},"f:labels":{".":{},"f:component":{},"f:tier":{}},"f:ownerReferences":{".":{},"k:{\"uid\":\"33f9055c-2ae1-464b-8427-6a006c2c7ead\"}":{}}},"f:spec":{"f:containers":{"k:{\"name\":\"kube-controller-manager\"}":{".":{},"f:command":{},"f:image":{},"f:imagePullPolicy":{},"f:livenessProbe":{".":{},"f:failureThreshold":{},"f:httpGet":{".":{},"f:host":{},"f:path":{},"f:port":{},"f:scheme":{}},"f:initialDelaySeconds":{},"f:periodSeconds":{},"f:successThreshold":{},"f:timeoutSeconds":{}},"f:name":{},"f:resources":{".":{},"f:requests":{".":{},"f:cpu":{}}},"f:startupProbe":{".":{},"f:failureThreshold":{},"f:httpGet":{".":{},"f:host":{},"f:path":{},"f:port":{},"f:scheme":{}},"f:initialDelaySeconds":{},"f:periodSeconds":{},"f:successThreshold":{},"f:timeoutSeconds":{}},"f:terminationMessagePath":{},"f:terminationMessagePolicy":{},"f:volumeMounts":{".":{},"k:{\"mountPath\":\"/etc/ca-certificates\"}":{".":{},"f:mountPath":{},"f:name":{},"f:readOnly":{}},"k:{\"mountPath\":\"/etc/kubernetes/controller-manager.conf\"}":{".":{},"f:mountPath":{},"f:name":{},"f:readOnly":{}},"k:{\"mountPath\":\"/etc/ssl/certs\"}":{".":{},"f:mountPath":{},"f:name":{},"f:readOnly":{}},"k:{\"mountPath\":\"/run/config/pki\"}":{".":{},"f:mountPath":{},"f:name":{},"f:readOnly":{}},"k:{\"mountPath\":\"/usr/libexec/kubernetes/kubelet-plugins/volume/exec\"}":{".":{},"f:mountPath":{},"f:name":{}},"k:{\"mountPath\":\"/usr/local/share/ca-certificates\"}":{".":{},"f:mountPath":{},"f:name":{},"f:readOnly":{}},"k:{\"mountPath\":\"/usr/share/ca-certificates\"}":{".":{},"f:mountPath":{},"f:name":{},"f:readOnly":{}}}}},"f:dnsPolicy":{},"f:enableServiceLinks":{},"f:hostNetwork":{},"f:nodeName":{},"f:priority":{},"f:priorityClassName":{},"f:restartPolicy":{},"f:schedulerName":{},"f:securityContext":{".":{},"f:seccompProfile":{".":{},"f:type":{}}},"f:terminationGracePeriodSeconds":{},"f:tolerations":{},"f:volumes":{".":{},"k:{\"name\":\"ca-certs\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}},"k:{\"name\":\"etc-ca-certificates\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}},"k:{\"name\":\"flexvolume-dir\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}},"k:{\"name\":\"k8s-certs\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}},"k:{\"name\":\"kubeconfig\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}},"k:{\"name\":\"usr-local-share-ca-certificates\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}},"k:{\"name\":\"usr-share-ca-certificates\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}}}}},"manager":"kubelet","operation":"Update","time":"2025-04-15T14:17:41Z"},{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:conditions":{".":{},"k:{\"type\":\"ContainersReady\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Initialized\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"PodReadyToStartContainers\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"PodScheduled\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Ready\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}}},"f:containerStatuses":{},"f:hostIP":{},"f:hostIPs":{},"f:phase":{},"f:podIP":{},"f:podIPs":{".":{},"k:{\"ip\":\"192.168.65.3\"}":{".":{},"f:ip":{}}},"f:startTime":{}}},"manager":"kubelet","operation":"Update","subresource":"status","time":"2025-04-15T14:17:51Z"}],"name":"kube-controller-manager-docker-desktop","namespace":"kube-system","ownerReferences":[{"apiVersion":"v1","controller":true,"kind":"Node","name":"docker-desktop","uid":"33f9055c-2ae1-464b-8427-6a006c2c7ead"}],"resourceVersion":"420","uid":"5f7ec5f2-bb04-4614-b4b7-764283c8dd7b"},"spec":{"containers":[{"command":["kube-controller-manager","--authentication-kubeconfig=/etc/kubernetes/controller-manager.conf","--authorization-kubeconfig=/etc/kubernetes/controller-manager.conf","--bind-address=127.0.0.1","--client-ca-file=/run/config/pki/ca.crt","--cluster-name=kubernetes","--cluster-signing-cert-file=/run/config/pki/ca.crt","--cluster-signing-key-file=/run/config/pki/ca.key","--controllers=*,bootstrapsigner,tokencleaner","--horizontal-pod-autoscaler-sync-period=60s","--kubeconfig=/etc/kubernetes/controller-manager.conf","--leader-elect=false","--node-monitor-grace-period=180s","--node-monitor-period=30s","--pvclaimbinder-sync-period=60s","--requestheader-client-ca-file=/run/config/pki/front-proxy-ca.crt","--root-ca-file=/run/config/pki/ca.crt","--service-account-private-key-file=/run/config/pki/sa.key","--use-service-account-credentials=true"],"image":"registry.k8s.io/kube-controller-manager:v1.32.2","imagePullPolicy":"IfNotPresent","livenessProbe":{"failureThreshold":8,"httpGet":{"host":"127.0.0.1","path":"/healthz","port":10257,"scheme":"HTTPS"},"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":15},"name":"kube-controller-manager","resources":{"requests":{"cpu":"200m"}},"startupProbe":{"failureThreshold":24,"httpGet":{"host":"127.0.0.1","path":"/healthz","port":10257,"scheme":"HTTPS"},"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":15},"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","volumeMounts":[{"mountPath":"/etc/ssl/certs","name":"ca-certs","readOnly":true},{"mountPath":"/etc/ca-certificates","name":"etc-ca-certificates","readOnly":true},{"mountPath":"/usr/libexec/kubernetes/kubelet-plugins/volume/exec","name":"flexvolume-dir"},{"mountPath":"/run/config/pki","name":"k8s-certs","readOnly":true},{"mountPath":"/etc/kubernetes/controller-manager.conf","name":"kubeconfig","readOnly":true},{"mountPath":"/usr/local/share/ca-certificates","name":"usr-local-share-ca-certificates","readOnly":true},{"mountPath":"/usr/share/ca-certificates","name":"usr-share-ca-certificates","readOnly":true}]}],"dnsPolicy":"ClusterFirst","enableServiceLinks":true,"hostNetwork":true,"nodeName":"docker-desktop","preemptionPolicy":"PreemptLowerPriority","priority":2000001000,"priorityClassName":"system-node-critical","restartPolicy":"Always","schedulerName":"default-scheduler","securityContext":{"seccompProfile":{"type":"RuntimeDefault"}},"terminationGracePeriodSeconds":30,"tolerations":[{"effect":"NoExecute","operator":"Exists"}],"volumes":[{"hostPath":{"path":"/etc/ssl/certs","type":"DirectoryOrCreate"},"name":"ca-certs"},{"hostPath":{"path":"/etc/ca-certificates","type":"DirectoryOrCreate"},"name":"etc-ca-certificates"},{"hostPath":{"path":"/usr/libexec/kubernetes/kubelet-plugins/volume/exec","type":"DirectoryOrCreate"},"name":"flexvolume-dir"},{"hostPath":{"path":"/run/config/pki","type":"DirectoryOrCreate"},"name":"k8s-certs"},{"hostPath":{"path":"/etc/kubernetes/controller-manager.conf","type":"FileOrCreate"},"name":"kubeconfig"},{"hostPath":{"path":"/usr/local/share/ca-certificates","type":"DirectoryOrCreate"},"name":"usr-local-share-ca-certificates"},{"hostPath":{"path":"/usr/share/ca-certificates","type":"DirectoryOrCreate"},"name":"usr-share-ca-certificates"}]},"status":{"conditions":[{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:35Z","status":"True","type":"PodReadyToStartContainers"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:33Z","status":"True","type":"Initialized"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:51Z","status":"True","type":"Ready"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:51Z","status":"True","type":"ContainersReady"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:33Z","status":"True","type":"PodScheduled"}],"containerStatuses":[{"containerID":"docker://058727a950974f936dc4f00cc28e44196c93329371a03b32a387d4b1cbc12d6c","image":"registry.k8s.io/kube-controller-manager:v1.32.2","imageID":"docker://sha256:3c9285acfd2ff7915bb451cc40ac060366ac519f3fef00c455f5aca0e0346c4d","lastState":{},"name":"kube-controller-manager","ready":true,"restartCount":1,"started":true,"state":{"running":{"startedAt":"2025-04-15T14:17:34Z"}},"volumeMounts":[{"mountPath":"/etc/ssl/certs","name":"ca-certs","readOnly":true,"recursiveReadOnly":"Disabled"},{"mountPath":"/etc/ca-certificates","name":"etc-ca-certificates","readOnly":true,"recursiveReadOnly":"Disabled"},{"mountPath":"/usr/libexec/kubernetes/kubelet-plugins/volume/exec","name":"flexvolume-dir"},{"mountPath":"/run/config/pki","name":"k8s-certs","readOnly":true,"recursiveReadOnly":"Disabled"},{"mountPath":"/etc/kubernetes/controller-manager.conf","name":"kubeconfig","readOnly":true,"recursiveReadOnly":"Disabled"},{"mountPath":"/usr/local/share/ca-certificates","name":"usr-local-share-ca-certificates","readOnly":true,"recursiveReadOnly":"Disabled"},{"mountPath":"/usr/share/ca-certificates","name":"usr-share-ca-certificates","readOnly":true,"recursiveReadOnly":"Disabled"}]}],"hostIP":"192.168.65.3","hostIPs":[{"ip":"192.168.65.3"}],"phase":"Running","podIP":"192.168.65.3","podIPs":[{"ip":"192.168.65.3"}],"qosClass":"Burstable","startTime":"2025-04-15T14:17:33Z"}},{"apiVersion":"v1","kind":"Pod","metadata":{"creationTimestamp":"2025-04-15T14:17:43Z","generateName":"kube-proxy-","labels":{"controller-revision-hash":"7bb84c4984","k8s-app":"kube-proxy","pod-template-generation":"1"},"managedFields":[{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:generateName":{},"f:labels":{".":{},"f:controller-revision-hash":{},"f:k8s-app":{},"f:pod-template-generation":{}},"f:ownerReferences":{".":{},"k:{\"uid\":\"39cce9b2-f608-4be9-900d-837ebb44ecdc\"}":{}}},"f:spec":{"f:affinity":{".":{},"f:nodeAffinity":{".":{},"f:requiredDuringSchedulingIgnoredDuringExecution":{}}},"f:containers":{"k:{\"name\":\"kube-proxy\"}":{".":{},"f:command":{},"f:env":{".":{},"k:{\"name\":\"NODE_NAME\"}":{".":{},"f:name":{},"f:valueFrom":{".":{},"f:fieldRef":{}}}},"f:image":{},"f:imagePullPolicy":{},"f:name":{},"f:resources":{},"f:securityContext":{".":{},"f:privileged":{}},"f:terminationMessagePath":{},"f:terminationMessagePolicy":{},"f:volumeMounts":{".":{},"k:{\"mountPath\":\"/lib/modules\"}":{".":{},"f:mountPath":{},"f:name":{},"f:readOnly":{}},"k:{\"mountPath\":\"/run/xtables.lock\"}":{".":{},"f:mountPath":{},"f:name":{}},"k:{\"mountPath\":\"/var/lib/kube-proxy\"}":{".":{},"f:mountPath":{},"f:name":{}}}}},"f:dnsPolicy":{},"f:enableServiceLinks":{},"f:hostNetwork":{},"f:nodeSelector":{},"f:priorityClassName":{},"f:restartPolicy":{},"f:schedulerName":{},"f:securityContext":{},"f:serviceAccount":{},"f:serviceAccountName":{},"f:terminationGracePeriodSeconds":{},"f:tolerations":{},"f:volumes":{".":{},"k:{\"name\":\"kube-proxy\"}":{".":{},"f:configMap":{".":{},"f:defaultMode":{},"f:name":{}},"f:name":{}},"k:{\"name\":\"lib-modules\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}},"k:{\"name\":\"xtables-lock\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}}}}},"manager":"kube-controller-manager","operation":"Update","time":"2025-04-15T14:17:43Z"},{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:conditions":{"k:{\"type\":\"ContainersReady\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Initialized\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"PodReadyToStartContainers\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Ready\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}}},"f:containerStatuses":{},"f:hostIP":{},"f:hostIPs":{},"f:phase":{},"f:podIP":{},"f:podIPs":{".":{},"k:{\"ip\":\"192.168.65.3\"}":{".":{},"f:ip":{}}},"f:startTime":{}}},"manager":"kubelet","operation":"Update","subresource":"status","time":"2025-04-15T14:17:45Z"}],"name":"kube-proxy-hl82z","namespace":"kube-system","ownerReferences":[{"apiVersion":"apps/v1","blockOwnerDeletion":true,"controller":true,"kind":"DaemonSet","name":"kube-proxy","uid":"39cce9b2-f608-4be9-900d-837ebb44ecdc"}],"resourceVersion":"368","uid":"1d2ff8db-af60-4c36-ac23-cb6a3a4d75fb"},"spec":{"affinity":{"nodeAffinity":{"requiredDuringSchedulingIgnoredDuringExecution":{"nodeSelectorTerms":[{"matchFields":[{"key":"metadata.name","operator":"In","values":["docker-desktop"]}]}]}}},"containers":[{"command":["/usr/local/bin/kube-proxy","--config=/var/lib/kube-proxy/config.conf","--hostname-override=$(NODE_NAME)"],"env":[{"name":"NODE_NAME","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"spec.nodeName"}}}],"image":"registry.k8s.io/kube-proxy:v1.32.2","imagePullPolicy":"IfNotPresent","name":"kube-proxy","resources":{},"securityContext":{"privileged":true},"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","volumeMounts":[{"mountPath":"/var/lib/kube-proxy","name":"kube-proxy"},{"mountPath":"/run/xtables.lock","name":"xtables-lock"},{"mountPath":"/lib/modules","name":"lib-modules","readOnly":true},{"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount","name":"kube-api-access-pp5qt","readOnly":true}]}],"dnsPolicy":"ClusterFirst","enableServiceLinks":true,"hostNetwork":true,"nodeName":"docker-desktop","nodeSelector":{"kubernetes.io/os":"linux"},"preemptionPolicy":"PreemptLowerPriority","priority":2000001000,"priorityClassName":"system-node-critical","restartPolicy":"Always","schedulerName":"default-scheduler","securityContext":{},"serviceAccount":"kube-proxy","serviceAccountName":"kube-proxy","terminationGracePeriodSeconds":30,"tolerations":[{"operator":"Exists"},{"effect":"NoExecute","key":"node.kubernetes.io/not-ready","operator":"Exists"},{"effect":"NoExecute","key":"node.kubernetes.io/unreachable","operator":"Exists"},{"effect":"NoSchedule","key":"node.kubernetes.io/disk-pressure","operator":"Exists"},{"effect":"NoSchedule","key":"node.kubernetes.io/memory-pressure","operator":"Exists"},{"effect":"NoSchedule","key":"node.kubernetes.io/pid-pressure","operator":"Exists"},{"effect":"NoSchedule","key":"node.kubernetes.io/unschedulable","operator":"Exists"},{"effect":"NoSchedule","key":"node.kubernetes.io/network-unavailable","operator":"Exists"}],"volumes":[{"configMap":{"defaultMode":420,"name":"kube-proxy"},"name":"kube-proxy"},{"hostPath":{"path":"/run/xtables.lock","type":"FileOrCreate"},"name":"xtables-lock"},{"hostPath":{"path":"/lib/modules","type":""},"name":"lib-modules"},{"name":"kube-api-access-pp5qt","projected":{"defaultMode":420,"sources":[{"serviceAccountToken":{"expirationSeconds":3607,"path":"token"}},{"configMap":{"items":[{"key":"ca.crt","path":"ca.crt"}],"name":"kube-root-ca.crt"}},{"downwardAPI":{"items":[{"fieldRef":{"apiVersion":"v1","fieldPath":"metadata.namespace"},"path":"namespace"}]}}]}}]},"status":{"conditions":[{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:44Z","status":"True","type":"PodReadyToStartContainers"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:43Z","status":"True","type":"Initialized"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:44Z","status":"True","type":"Ready"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:44Z","status":"True","type":"ContainersReady"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:43Z","status":"True","type":"PodScheduled"}],"containerStatuses":[{"containerID":"docker://4bff72b355150f95a03b914a1bc2259824ebc4089cf08cb8537c173a2e781fb6","image":"registry.k8s.io/kube-proxy:v1.32.2","imageID":"docker://sha256:e5aac5df76d9b8dc899ab8c4db25a7648e7fb25cafe7a155066247883c78f062","lastState":{},"name":"kube-proxy","ready":true,"restartCount":0,"started":true,"state":{"running":{"startedAt":"2025-04-15T14:17:44Z"}},"volumeMounts":[{"mountPath":"/var/lib/kube-proxy","name":"kube-proxy"},{"mountPath":"/run/xtables.lock","name":"xtables-lock"},{"mountPath":"/lib/modules","name":"lib-modules","readOnly":true,"recursiveReadOnly":"Disabled"},{"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount","name":"kube-api-access-pp5qt","readOnly":true,"recursiveReadOnly":"Disabled"}]}],"hostIP":"192.168.65.3","hostIPs":[{"ip":"192.168.65.3"}],"phase":"Running","podIP":"192.168.65.3","podIPs":[{"ip":"192.168.65.3"}],"qosClass":"BestEffort","startTime":"2025-04-15T14:17:43Z"}},{"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{"kubernetes.io/config.hash":"bfe797ff5a3ebaafbe14820f2b118e22","kubernetes.io/config.mirror":"bfe797ff5a3ebaafbe14820f2b118e22","kubernetes.io/config.seen":"2025-04-15T14:17:33.749038050Z","kubernetes.io/config.source":"file"},"creationTimestamp":"2025-04-15T14:17:38Z","labels":{"component":"kube-scheduler","tier":"control-plane"},"managedFields":[{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:kubernetes.io/config.hash":{},"f:kubernetes.io/config.mirror":{},"f:kubernetes.io/config.seen":{},"f:kubernetes.io/config.source":{}},"f:labels":{".":{},"f:component":{},"f:tier":{}},"f:ownerReferences":{".":{},"k:{\"uid\":\"33f9055c-2ae1-464b-8427-6a006c2c7ead\"}":{}}},"f:spec":{"f:containers":{"k:{\"name\":\"kube-scheduler\"}":{".":{},"f:command":{},"f:image":{},"f:imagePullPolicy":{},"f:livenessProbe":{".":{},"f:failureThreshold":{},"f:httpGet":{".":{},"f:host":{},"f:path":{},"f:port":{},"f:scheme":{}},"f:initialDelaySeconds":{},"f:periodSeconds":{},"f:successThreshold":{},"f:timeoutSeconds":{}},"f:name":{},"f:readinessProbe":{".":{},"f:failureThreshold":{},"f:httpGet":{".":{},"f:host":{},"f:path":{},"f:port":{},"f:scheme":{}},"f:periodSeconds":{},"f:successThreshold":{},"f:timeoutSeconds":{}},"f:resources":{".":{},"f:requests":{".":{},"f:cpu":{}}},"f:startupProbe":{".":{},"f:failureThreshold":{},"f:httpGet":{".":{},"f:host":{},"f:path":{},"f:port":{},"f:scheme":{}},"f:initialDelaySeconds":{},"f:periodSeconds":{},"f:successThreshold":{},"f:timeoutSeconds":{}},"f:terminationMessagePath":{},"f:terminationMessagePolicy":{},"f:volumeMounts":{".":{},"k:{\"mountPath\":\"/etc/kubernetes/scheduler.conf\"}":{".":{},"f:mountPath":{},"f:name":{},"f:readOnly":{}}}}},"f:dnsPolicy":{},"f:enableServiceLinks":{},"f:hostNetwork":{},"f:nodeName":{},"f:priority":{},"f:priorityClassName":{},"f:restartPolicy":{},"f:schedulerName":{},"f:securityContext":{".":{},"f:seccompProfile":{".":{},"f:type":{}}},"f:terminationGracePeriodSeconds":{},"f:tolerations":{},"f:volumes":{".":{},"k:{\"name\":\"kubeconfig\"}":{".":{},"f:hostPath":{".":{},"f:path":{},"f:type":{}},"f:name":{}}}}},"manager":"kubelet","operation":"Update","time":"2025-04-15T14:17:38Z"},{"apiVersion":"v1","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:conditions":{".":{},"k:{\"type\":\"ContainersReady\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Initialized\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"PodReadyToStartContainers\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"PodScheduled\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Ready\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}}},"f:containerStatuses":{},"f:hostIP":{},"f:hostIPs":{},"f:phase":{},"f:podIP":{},"f:podIPs":{".":{},"k:{\"ip\":\"192.168.65.3\"}":{".":{},"f:ip":{}}},"f:startTime":{}}},"manager":"kubelet","operation":"Update","subresource":"status","time":"2025-04-15T14:17:49Z"}],"name":"kube-scheduler-docker-desktop","namespace":"kube-system","ownerReferences":[{"apiVersion":"v1","controller":true,"kind":"Node","name":"docker-desktop","uid":"33f9055c-2ae1-464b-8427-6a006c2c7ead"}],"resourceVersion":"418","uid":"eff9741e-dc97-4d52-b33b-ac7b8933ea54"},"spec":{"containers":[{"command":["kube-scheduler","--authentication-kubeconfig=/etc/kubernetes/scheduler.conf","--authorization-kubeconfig=/etc/kubernetes/scheduler.conf","--bind-address=127.0.0.1","--kubeconfig=/etc/kubernetes/scheduler.conf","--leader-elect=true"],"image":"registry.k8s.io/kube-scheduler:v1.32.2","imagePullPolicy":"IfNotPresent","livenessProbe":{"failureThreshold":8,"httpGet":{"host":"127.0.0.1","path":"/livez","port":10259,"scheme":"HTTPS"},"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":15},"name":"kube-scheduler","readinessProbe":{"failureThreshold":3,"httpGet":{"host":"127.0.0.1","path":"/readyz","port":10259,"scheme":"HTTPS"},"periodSeconds":1,"successThreshold":1,"timeoutSeconds":15},"resources":{"requests":{"cpu":"100m"}},"startupProbe":{"failureThreshold":24,"httpGet":{"host":"127.0.0.1","path":"/livez","port":10259,"scheme":"HTTPS"},"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":15},"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","volumeMounts":[{"mountPath":"/etc/kubernetes/scheduler.conf","name":"kubeconfig","readOnly":true}]}],"dnsPolicy":"ClusterFirst","enableServiceLinks":true,"hostNetwork":true,"nodeName":"docker-desktop","preemptionPolicy":"PreemptLowerPriority","priority":2000001000,"priorityClassName":"system-node-critical","restartPolicy":"Always","schedulerName":"default-scheduler","securityContext":{"seccompProfile":{"type":"RuntimeDefault"}},"terminationGracePeriodSeconds":30,"tolerations":[{"effect":"NoExecute","operator":"Exists"}],"volumes":[{"hostPath":{"path":"/etc/kubernetes/scheduler.conf","type":"FileOrCreate"},"name":"kubeconfig"}]},"status":{"conditions":[{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:34Z","status":"True","type":"PodReadyToStartContainers"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:33Z","status":"True","type":"Initialized"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:49Z","status":"True","type":"Ready"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:49Z","status":"True","type":"ContainersReady"},{"lastProbeTime":null,"lastTransitionTime":"2025-04-15T14:17:33Z","status":"True","type":"PodScheduled"}],"containerStatuses":[{"containerID":"docker://5a4c7040df1cc74c8387f948b996a5209ab2da83853fa976e2a345a38c284dbc","image":"registry.k8s.io/kube-scheduler:v1.32.2","imageID":"docker://sha256:82dfa03f692fb5d84f66c17d6ee9126b081182152b25d28ea456d89b7d5d8911","lastState":{},"name":"kube-scheduler","ready":true,"restartCount":1,"started":true,"state":{"running":{"startedAt":"2025-04-15T14:17:34Z"}},"volumeMounts":[{"mountPath":"/etc/kubernetes/scheduler.conf","name":"kubeconfig","readOnly":true,"recursiveReadOnly":"Disabled"}]}],"hostIP":"192.168.65.3","hostIPs":[{"ip":"192.168.65.3"}],"phase":"Running","podIP":"192.168.65.3","podIPs":[{"ip":"192.168.65.3"}],"qosClass":"Burstable","startTime":"2025-04-15T14:17:33Z"}}]
💬 Final Answer: 你的集群中有以下 Pods:
1. **coredns-668d6bf9bc-67xfh**
- **Namespace:** `kube-system`
- **Status:** Running
- **IP:** 10.1.2.55
- **Labels:** `k8s-app=kube-dns`, `pod-template-hash=668d6bf9bc`
2. **coredns-668d6bf9bc-ksg4k**
- **Namespace:** `kube-system`
- **Status:** Running
- **IP:** 10.1.2.56
- **Labels:** `k8s-app=kube-dns`, `pod-template-hash=668d6bf9bc`
3. **etcd-docker-desktop**
- **Namespace:** `kube-system`
- **Status:** Running
- **IP:** 192.168.65.3
- **Labels:** `component=etcd`, `tier=control-plane`
4. **kube-apiserver-docker-desktop**
- **Namespace:** `kube-system`
- **Status:** Running
- **IP:** 192.168.65.3
- **Labels:** `component=kube-apiserver`, `tier=control-plane`
5. **kube-controller-manager-docker-desktop**
- **Namespace:** `kube-system`
- **Status:** Running
- **IP:** 192.168.65.3
- **Labels:** `component=kube-controller-manager`, `tier=control-plane`
6. **kube-proxy-hl82z**
- **Namespace:** `kube-system`
- **Status:** Running
- **IP:** 192.168.65.3
- **Labels:** `controller-revision-hash=7bb84c4984`, `k8s-app=kube-proxy`, `pod-template-generation=1`
7. **kube-scheduler-docker-desktop**
- **Namespace:** `kube-system`
- **Status:** Running
- **IP:** 192.168.65.3
- **Labels:** `component=kube-scheduler`, `tier=control-plane`
这些 Pods 主要用于集群的核心功能,如 DNS、API 服务、控制器管理、调度器等。
如何系统的去学习大模型LLM ?
大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业
?”“谁的饭碗又将不保了?
”等问题热议不断。
事实上,抢你饭碗的不是AI,而是会利用AI的人。
继科大讯飞、阿里、华为
等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?
与其焦虑……
不如成为「掌握AI工具的技术人
」,毕竟AI时代,谁先尝试,谁就能占得先机!
但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。
基于此,我用做产品的心态来打磨这份大模型教程,深挖痛点并持续修改了近70次后,终于把整个AI大模型的学习门槛,降到了最低!
在这个版本当中:
第一您不需要具备任何算法和数学的基础
第二不要求准备高配置的电脑
第三不必懂Python等任何编程语言
您只需要听我讲,跟着我做即可,为了让学习的道路变得更简单,这份大模型教程已经给大家整理并打包,现在将这份 LLM大模型资料
分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓
一、LLM大模型经典书籍
AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。
二、640套LLM大模型报告合集
这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)
三、LLM大模型系列视频教程
四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)
五、AI产品经理大模型教程
LLM大模型学习路线 ↓
阶段1:AI大模型时代的基础理解
-
目标:了解AI大模型的基本概念、发展历程和核心原理。
-
内容:
- L1.1 人工智能简述与大模型起源
- L1.2 大模型与通用人工智能
- L1.3 GPT模型的发展历程
- L1.4 模型工程
- L1.4.1 知识大模型
- L1.4.2 生产大模型
- L1.4.3 模型工程方法论
- L1.4.4 模型工程实践
- L1.5 GPT应用案例
阶段2:AI大模型API应用开发工程
-
目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
-
内容:
- L2.1 API接口
- L2.1.1 OpenAI API接口
- L2.1.2 Python接口接入
- L2.1.3 BOT工具类框架
- L2.1.4 代码示例
- L2.2 Prompt框架
- L2.3 流水线工程
- L2.4 总结与展望
阶段3:AI大模型应用架构实践
-
目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
-
内容:
- L3.1 Agent模型框架
- L3.2 MetaGPT
- L3.3 ChatGLM
- L3.4 LLAMA
- L3.5 其他大模型介绍
阶段4:AI大模型私有化部署
-
目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
-
内容:
- L4.1 模型私有化部署概述
- L4.2 模型私有化部署的关键技术
- L4.3 模型私有化部署的实施步骤
- L4.4 模型私有化部署的应用场景
这份 LLM大模型资料
包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓