概述
kubectl是k8s的客户端程序,也是k8s的命令行工具,kubectl提供了大量的子命令可以让用户和集群进行交互。
kubectl不一定部署在master上。用户通过kubectl连接到master上然后将命令通过master分发到集群的node节点上。
默认情况下是连接本地的apiserver 统一集群入口
使用https连接集群
默认情况下,kubectl使用非安全http协议连接本地apiserver的8080非安全端口:
[root@master ~]# kubectl -s 127.0.0.1:8080 get node NAME STATUS ROLES AGE VERSION 192.168.1.102 Ready <none> 18h v1.9.2 192.168.1.103 Ready <none> 17h v1.9.2
现在使用https端口(6443)连接集群,方如如下:
1.将master端的kubectl客户端工具放到其中一台节点 [root@master ~]# scp /opt/kubernetes/bin/kubectl root@192.168.1.103:/usr/local/bin/ 2.将master端的admin证书传到一台节点, admin证书主要用于客户端工作管理集群 [root@master ssl]# scp admin*.pem root@192.168.1.103:/root [root@node2 ssl]# cp ca.pem /root/ 3.生成kubectl配置文件 kubectl config set-cluster kubernetes --server=https://192.168.1.101:6443 --certificate-authority=ca.pem 这步完成后会在当前目录下创建一个隐藏文件./kube目录,在其中生成一个config文件, 4.设置用户项中cluster-admin用户证书认证字段 kubectl config set-credentials cluster-admin --certificate-authority=ca.pem --client-key=admin-key.pem --client-certificate=admin.pem 5.设置环境中的默认上下文件 kubectl config set-context default --cluster=kubernetes --user=cluster-admin 6.设置当前环境的default [root@node2 ~]# kubectl config use-context default 7. 查看Node节点 [root@node2 ~]# kubectl get node
后面就是通过当前环境下的config来操作集群
[root@node2 ~]# cat .kube/config apiVersion: v1 clusters: - cluster: certificate-authority: /root/ca.pem server: https://192.168.1.101:6443 name: kubernetes contexts: - context: cluster: kubernetes user: cluster-admin name: default current-context: default kind: Config preferences: {} users: - name: cluster-admin user: client-certificate: /root/admin.pem client-key: /root/admin-key.pem