kubectl是k8s的客户端程序,也是k8s的命令行工具,kubectl提供了大量的子命令可以让用户和集群进行交互。
kubectl不一定部署在master上。用户通过kubectl连接到master上然后将命令通过master分发到集群的node节点上。
默认情况下是默认连接本地的apiserver
默认情况下,kubectl使用非安全http协议连接本地apiserver的8080非安全端口:
现在,如果想使用apiserver安全的https端口(6443)连接集群,可以这样:
// 先将kubectl传到一个node节点上 scp /opt/kubernetes/bin/kubectl 10.10.99.233:/usr/bin // 将所需的证书传到node节点上 scp admin*pem 10.10.99.233:/root cp /opt/kubernetes/ssl/ca.pem /root // 生成kubectl配置文件 kubectl config set-cluster kubernetes --server=https://10.10.99.225:6443 --certificate-authority=/root/ca.pem (这一步创建完成会在当前生成一个.kube隐藏目录,并在其中生成一个config文件) // 设置用户项中cluster-admin用户证书认证字段 kubectl config set-credentials cluster-admin --certificate-authority=/root/ca.pem --client-key=/root/admin-key.pem --client-certificate=/root/admin.pem // 设置环境项中默认上下文 kubectl config set-context default --cluster=kubernetes --user=cluster-admin
最终就在当前目录下.kube隐藏目录下生成了一个config文件,后面就是通过这个文件访问集群,其内容如下:
apiVersion: v1 clusters: - cluster: certificate-authority: /root/ca.pem server: https://10.10.99.225:6443 name: kubernetes contexts: - context: cluster: kubernetes user: cluster-admin name: default current-context: default kind: Config preferences: {} users: - name: cluster-admin user: as-user-extra: {} client-certificate: /root/admin.pem client-key: /root/admin-key.pem