想要利用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
2162

被折叠的 条评论
为什么被折叠?



