容器相关
非root用户Docker与K8S
Containerd安装
Containerd常用命令
Docker
镜像创建
国内镜像仓库
容器创建(Dockerfile)
容器系统
docker配置
docker数据管理
docker网络管理
docker容器自启动
docker镜像加速
docker问题
搭建Portainer可视化界面
Docker Swarm
Swarm搭建Docker集群
Docker Compose
Docker Compose命令
Docker Compose模板
Docker Machine
Kubernetes常用命令
k8s部署(kubeadmin)
k8s高可用部署
MiniKube
k8s1.24部署(containerd)
k8s1.24部署(docker)
部署 Dashboard
Kuboard K8S管理台
k8s权限管理
k8s网络插件
私有仓密码镜像拉取
k8s集群管理
POD--基本单位
Pod模板
Pod生命周期
Pod健康检查
初始化容器(initContainer)
Deployment--Pod的管理
Deployment模板
Deployment升级与回滚
DaemonSet控制器
StatefulSet控制器(有状态)
JOB与CRONJOB
Service--发布服务
ingress-traefix
ingress-nginx
MetalLB
存储与配置
持久存储卷
配置存储卷
资源管理
标签、选择器与注解
资源预留
调度管理
自动扩容
Proxy API与API Server
Helm--K8S的包管理器
helm常用命令
自定义Chart
私有chart仓库
helm dashboard
K8S证书过期
K8S问题解决
Harbor安装
Harbor操作
Harbor问题
Harbor升级
Docker Registry安装
Docker Registry鉴权
Registry用Nginx代理SSL及鉴权
Docker Registry问题
Istio 服务网络
常用示例
Gateway【服务网关】
kiali 可视化页面
开启HTTPS
linkerd 服务网络
本文档使用MrDoc发布
返回首页
-
+
Proxy API与API Server
2021年9月24日 15:24
admin
#Proxy API ##开启Proxy API #指定端口 kubectl proxy --port=8080 --address=0.0.0.0 #拒绝客户端访问RC的API kubectl proxy --reject-paths="^/api/v1/replicationcontrollers" --port=8001 --v=2 #白名单(允许特定IP访问) kubectl proxy --accept-hosts="^localhost$,^127\\.0\\.0\\.1,^\\[::1\\]$" --port=8001 --v=2 --- ##Prxoy API接口 #列出指定节点内所有Pod的信息 /api/v1/nodes/<节点名称或IP>/proxy/pods #列出指定节点内物理资源的统计信息 /api/v1/nodes/<节点名称或IP>/proxy/stats #列出指定节点的概要信息 /api/v1/nodes/<节点名称或IP>/proxy/spec =========================================================== #访问pod /api/v1/namespaces/<命名空间名称>/pods/<name>/proxy #访问pod服务的URL路径(/demo) /api/v1/namespaces/<命名空间名称>/pods/<name>/proxy/demo #访问services /api/v1/namespaces/<命名空间名称>/services/<name>/proxy #访问service服务的URL路径(/demo) /api/v1/namespaces/<命名空间名称>/services/<name>/proxy/demo --- ###如果kubelet进程启动时包含"--enable-debugging-handlers=true"参数,则Proxy API还会增加以下接口: #列出和该节点相关的Metrics信息 /api/v1/nodes/<节点名称或IP>/proxy/metrics #列出指定pod的相关的Metrics信息 /api/v1/namespaces/<命名空间名称>/pods/<name>/proxy/metrics #列出指定pod的相关的Service信息 /api/v1/namespaces/<命名空间名称>/service/<name>/proxy/metrics ============================================================ 以下资源使用方式如上: #列出在该节点上运行的pod信息 /api/v1/nodes/<节点名称或IP>/proxy/runningpods #列出节点的各类日志信息 /api/v1/nodes/<节点名称或IP>/proxy/logs #列出节点上当前Web服务的状态,包含CPU、内存的使用情况 /api/v1/nodes/<节点名称或IP>/proxy/debug/pprof #在节点上运行某个容器 /api/v1/nodes/<节点名称或IP>/proxy/run #在节点上个某个容器中运行某个命令 /api/v1/nodes/<节点名称或IP>/proxy/exec #在节点上attach某个容器 /api/v1/nodes/<节点名称或IP>/proxy/attach #实现节点上的Pod端口转发 /api/v1/nodes/<节点名称或IP>/proxy/portforward --- #API Server ![](/media//202110/2021-10-04101518266378c99f7cc10e070c1_edit_14257046684560.jpg) --- ##访问URL /{apiVersion}/namespaces/{namespace}/{资源类型} ###示例 #获取集群中所有的pod curl http://localhost:8080/api/v1/pods #获取集群中所有的deployment curl http://localhost:8080/api/v1/deployments #获取集群中所有的service curl http://localhost:8080/api/v1/services =========================================================== #获取指定命名空间下的所有pod curl http://localhost:8080/api/v1/namespaces/default/pods --- ##创建资源(POST) curl http://localhost:8080/api/v1/namespaces/default/pods -H "Content-Type:application/json" -X POST -d ' { "apiVersion":"v1", "kind":"Pod", "metadata":{ "name": "examplepod" }, "spec":{ "containers":[ { "name":"examplepod-container", "image":"busybox", "imagePullPolicy":"IfNotPresent", "command":[ "sh", "-c" ], "args":[ "echo \"hello world\";sleep 3600" ] } ] } }' --- ##替换资源(PUT) curl http://localhost:8080/api/v1/namespaces/default/pods/examplepod -H "Content-Type:application/json" -X PUT -d ' { "apiVersion":"v1", "kind":"Pod", "metadata":{ "name": "examplepod" }, "spec":{ "containers":[ { "name":"examplepod-container", "image":"busybox", "imagePullPolicy":"IfNotPresent", "command":[ "sh", "-c" ], "args":[ "echo \"hello world2\";sleep 4200" #替换内容 ] } ] } }' --- ##更新资源(PATCH) curl http://localhost:8080/api/v1/namespaces/default/pods/examplepod -H "Content-Type:application/merge-patch+json" -X PATCH -d ' { "spec":{ "containers":[ { "args":[ "echo \"hello world3\";sleep 6800" #更新内容 ] } ] } }' --- ##删除资源(DELETE) #删除指定pod curl http://localhost:8080/api/v1/namespaces/default/pods/examplepod -H "Content-Type:application/json" -X DELETE #删除命名空间下的所有pod curl http://localhost:8080/api/v1/namespaces/default/pods -H "Content-Type:application/json" -X DELETE --- ##查询资源 #查询指定pod curl http://localhost:8080/api/v1/namespaces/default/pods/examplepod #查询命名空间下的所有pod curl http://localhost:8080/api/v1/namespaces/default/pods --- ##监控资源(watch) #监控指定pod curl http://localhost:8080/api/v1/watch/namespaces/default/pods/examplepod #监控命名空间下的所有pod curl http://localhost:8080/api/v1/watch/namespaces/default/pods --- ##日志读取 curl http://localhost:8080/api/v1/namespaces/default/pods/examplepod/log --- ##日志读取 curl http://localhost:8080/api/v1/namespaces/default/pods/examplepod/log --- ##状态查询 curl http://localhost:8080/api/v1/namespaces/default/pods/examplepod/status --- ##状态查询 curl http://localhost:8080/api/v1/namespaces/default/pods/examplepod/status --- ##状态更新 curl http://localhost:8080/api/v1/namespaces/default/pods/examplepod/status -H "Content-Type:application/merge-patch+json" -X PATCH -d '{ "status":{ "podIP":"10.244.1.66", #修改Pod的IP "phase":"Pending" #修改Pod的状态 } }' --- #Metrics-Server安装及配置 ##官网 https://github.com/kubernetes-sigs/metrics-server/releases ##修改安装配置文件 mkdir metrics-server cd metrics-server wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml # 修改 components.yaml 文件,在 args 下面添加以下两行内容,不校验证书,不然会报 x509 错误 - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP - --kubelet-insecure-tls # 替换image源,不然会拉取不到镜像 image: ninejy/metrics-server:v0.3.7 ![](/media//202110/2021-10-14152038568674.png) # 修改API版本 ![](/media//202110/2021-10-14152210345926.png) ##执行安装 kubectl apply -f components.yaml ##验证 kubectl top nodes ![](/media//202110/2021-10-14152800685304.png) --- ##hpa获取不到信息问题 ![](/media//202111/2021-11-15110841794655.png) ####原因:定义pod的时候,没有设置resources,HPA取不到CPU当前值 --- ####解决:设置pod的resources信息 ![](/media//202111/2021-11-15111003189511.png) ---
分享到: