Kubernetes集群外Windows10机器的kubectl访问集群资源图文详解

想要利用kubectl控制k8s集群,没有必要ssh到master节点,只要能访问到api server,在本地操作也一样。这一节我们就一起来看看如何在本地的Windows10机器利用kubectl控制远程的k8s集群。

我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。

操作环境

远程的k8s集群搭建在centos机器上,一台master,一台node。本地电脑为Windows10,和master之间的网络互通。

  • k8s-master 172.29.56.175
  • k8s-node1 172.29.56.176

API server

k8s的架构是围绕API server的,只要kubectl能访问到远程的API server一切就都好说了。默认配置下,API server在master的所有网口的6443端口监听,如下

[root@k8s-master ~]# netstat -ntlp | grep api
tcp6       0      0 :::6443                 :::*                    LISTEN      18149/kube-apiserve

确保本机可以telnet到master的6443端口即可进入下一步

telnet 172.29.56.175 6443

用户认证

出于安全考虑,集群中的组件在于API server交流时都需要认证。

kubectl的认证信息保存在~/.kube/config里面

[root@k8s-master ~]# cd .kube
[root@k8s-master .kube]# ll
total 12
drwxr-x---. 3 root root   23 Apr 28 15:01 cache
-rw-------. 1 root root 5453 Apr 28 15:01 config
drwxr-x---. 3 root root 4096 May 14 11:31 http-cache

config文件里面保存着HTTPS认证用到的证书信息,我这里删除了,剩下的信息如下

[root@k8s-master .kube]# cat config
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data:
    server: https://172.29.56.175:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data:
    client-key-data:

这里记录了API server的地址和集群的信息,配合上证书就可以完成API server的访问。

远程控制

  • 首先下载kubectl可执行文件

直接去官网下载查看下载路径。

我这里下载到c:\Users\Admin\k8s目录下

C:\Users\Admin>curl -L https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/windows/amd64/kubectl.exe -o c:\Users\Admin\k8s\kubectl.exe

为了方便使用,将上述目录加到环境变量PATH中,不知道如何加到PATH的可以参考我的另一篇博客《Windows10永久修改环境变量PATH图文详解》。验证下确实可以直接使用

C:\Users\Admin>kubectl
kubectl controls the Kubernetes cluster manager.

 Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/

Basic Commands (Beginner):
  create         Create a resource from a file or from stdin.
  expose         Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service
  run            Run a particular image on the cluster
  set            Set specific features on objects
...
...
  • 配置Config文件

在本地的家目录新建.kube文件夹,应该只能用命令行,因为文件名包含点号

C:\Users\Admin>md .kube

然后在xshell利用sz命令将master节点上的Config文件下载到刚才创建的.kube文件夹中

[root@k8s-master .kube]# sz config
  • 成功访问

之后不出意外就可以在本地看到远端集群信息了

C:\Users\Admin>kubectl get node -o wide
NAME         STATUS   ROLES    AGE   VERSION    INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
k8s-master   Ready    master   15d   v1.15.11   172.29.56.175   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://18.9.9
k8s-node1    Ready    <none>   15d   v1.15.11   172.29.56.176   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://18.9.9
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值