Kubernetes - 使用kubectl proxy

本文介绍如何在Mac环境下安装并配置Minikube集群, 详细讲解了使用kubectl proxy命令使API server监听在特定端口, 并允许远程主机访问的方法。通过设置API server接受所有主机请求, 实现了跨主机访问的功能。

在mac本地安装minikube后使用kubectl proxy命令就可以使API server监听在本地的8001端口上:

MacBook-Mini:~ test$ kubectl proxy
Starting to serve on 127.0.0.1:8001
  • 1
  • 2

如果想通过其它主机访问就需要指定监听的地址:

MacBook-Mini:~ test$ kubectl proxy --address=0.0.0.0
Starting to serve on [::]:8001
  • 1
  • 2

此时通过curl访问会出现未认证的提示:

Air:~ test$ curl -X GET -L http://mini:8001/
<h3>Unauthorized</h3>
  • 1
  • 2

设置API server接收所有主机的请求:

MacBook-Mini:~ test$ kubectl proxy --address='0.0.0.0'  --accept-hosts='^*$'
Starting to serve on [::]:8001
  • 1
  • 2

访问正常:

Air:~ test$ curl -X GET -L http://mini:8001/
{
  "paths": [
    "/api",
    "/api/v1",
    ...
  ]
}
[root@k8s-master dashboard]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml -O dashboard.yaml --2025-12-04 21:57:27-- https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml 正在解析主机 raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.109.133, 185.199.108.133, ... 正在连接 raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:7552 (7.4K) [text/plain] 正在保存至: “dashboard.yaml” 100%[=========================================================================================================>] 7,552 --.-K/s 用时 0s 2025-12-04 21:57:28 (69.1 MB/s) - 已保存 “dashboard.yaml” [7552/7552]) [root@k8s-master dashboard]# ls dashboard.yaml [root@k8s-master dashboard]# vim dashboard.yaml [root@k8s-master dashboard]# kubectl apply -f dashboard.yaml namespace/kubernetes-dashboard unchanged serviceaccount/kubernetes-dashboard unchanged service/kubernetes-dashboard unchanged secret/kubernetes-dashboard-certs unchanged secret/kubernetes-dashboard-csrf unchanged secret/kubernetes-dashboard-key-holder unchanged configmap/kubernetes-dashboard-settings unchanged role.rbac.authorization.k8s.io/kubernetes-dashboard unchanged clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard unchanged rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard unchanged clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard unchanged deployment.apps/kubernetes-dashboard created service/dashboard-metrics-scraper created deployment.apps/dashboard-metrics-scraper created [root@k8s-master dashboard]# kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE default nginx-5b947dcc4-47987 1/1 Running 2 4d kube-flannel kube-flannel-ds-9zjns 1/1 Running 2 4d2h kube-flannel kube-flannel-ds-hs79x 1/1 Running 2 4d2h kube-flannel kube-flannel-ds-vl9qs 1/1 Running 2 4d2h kube-system coredns-9d85f5447-4dcps 1/1 Running 2 4d3h kube-system coredns-9d85f5447-g6c49 1/1 Running 2 4d3h kube-system etcd-k8s-master 1/1 Running 2 4d3h kube-system kube-apiserver-k8s-master 1/1 Running 2 4d3h kube-system kube-controller-manager-k8s-master 1/1 Running 2 4d3h kube-system kube-proxy-6wfbb 1/1 Running 2 4d3h kube-system kube-proxy-7pkrq 1/1 Running 2 4d3h kube-system kube-proxy-jhc22 1/1 Running 2 4d3h kube-system kube-scheduler-k8s-master 1/1 Running 2 4d3h kubernetes-dashboard dashboard-metrics-scraper-755b949fd6-7bv8k 0/1 ContainerCreating 0 9s kubernetes-dashboard kubernetes-dashboard-7f4c8d4968-qc7lk 0/1 ContainerCreating 0 9s [root@k8s-master dashboard]# kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard service/kubernetes-dashboard edited [root@k8s-master dashboard]# kubectl get pods,svc -n kubernetes-dashboard NAME READY STATUS RESTARTS AGE pod/dashboard-metrics-scraper-755b949fd6-7bv8k 1/1 Running 0 2m24s pod/kubernetes-dashboard-7f4c8d4968-qc7lk 1/1 Running 0 2m24s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/dashboard-metrics-scraper ClusterIP 10.98.100.238 <none> 8000/TCP 2m24s service/kubernetes-dashboard NodePort 10.108.200.146 <none> 443:31486/TCP 7m46s [root@k8s-master dashboard]# kubectl get svc -A |grep kubernetes-dashboard kubernetes-dashboard dashboard-metrics-scraper ClusterIP 10.98.100.238 <none> 8000/TCP 3m22s kubernetes-dashboard kubernetes-dashboard NodePort 10.108.200.146 <none> 443:31486/TCP 8m44s [root@k8s-master dashboard]# kubectl get pods,svc -n kubernetes-dashboard NAME READY STATUS RESTARTS AGE pod/dashboard-metrics-scraper-755b949fd6-7bv8k 1/1 Running 0 6m4s pod/kubernetes-dashboard-7f4c8d4968-qc7lk 1/1 Running 0 6m4s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/dashboard-metrics-scraper ClusterIP 10.98.100.238 <none> 8000/TCP 6m4s service/kubernetes-dashboard NodePort 10.108.200.146 <none> 443:31486/TCP 11m 最后的命令输出是否正确?
最新发布
12-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值