使用kubectl连接远程Kubernetes集群

  • 环境准备
  • 下载kubectl
  • 下载地址
  • 安装kubectl并处理配置文件
  • Windows的安装配置
  • 安装kubectl
  • 拉取配置文件
  • Mac的安装配置
  • 安装kubectl
  • 拉取配置文件
  • kubectl命令自动补全
  • Linux的安装配置
  • 安装kubectl
  • 拉取配置文件
  • kubectl命令自动补全


环境准备

你需要准备一个Kubernetes集群,你要记下你安装Kubernetes的版本。如图我已经准备好了一个版本号为 v1.21.14 的集群:

Kubernetes 部署 Flink集群模式 kubectl连接集群_云原生

下载kubectl

下载地址

注意下载的版本号最好与你安装的Kubernetes版本对应上,各个版本的下载地址(⚠️注意修改url中的版本号):

  • Windows:
  • x86_64:
https://dl.k8s.io/release/版本号/bin/windows/amd64/kubectl.exe
  • arm64:
https://dl.k8s.io/release/版本号/bin/windows/arm64/kubectl.exe
  • MacOS:
  • Intel:
https://dl.k8s.io/release/版本号/bin/darwin/amd64/kubectl
  • Apple Silicon:
https://dl.k8s.io/release/版本号/bin/darwin/arm64/kubectl
  • Linux:
  • x86_64:
https://dl.k8s.io/release/版本号/bin/linux/amd64/kubectl
  • arm64:
https://dl.k8s.io/release/版本号/bin/linux/arm64/kubectl

v1.21.14 的 MacOS M1芯片的电脑为例,我的下载地址就为(注意修改版本号):

https://dl.k8s.io/release/v1.21.14/bin/darwin/arm64/kubectl

安装kubectl并处理配置文件

本次会以MacOS、Windows、Linux三个系统为例为大家讲解。你可以在目录中快速点击你的操作系统,只看你自己的操作系统的内容即可。

Windows的安装配置

安装kubectl

因为我的Windows电脑是x86_64架构的,所以我的下载地址为(注意修改自己的版本):

https://dl.k8s.io/release/v1.21.14/bin/windows/amd64/kubectl.exe

然后我们创建一个目录去安装kubectl,如图:

Kubernetes 部署 Flink集群模式 kubectl连接集群_kubernetes_02

每个目录的作用:

  • bin: 装kubectl可执行文件的目录
  • config: 配置文件的目录

接下来我们将kubectl下载到bin目录下:

Kubernetes 部署 Flink集群模式 kubectl连接集群_环境变量_03

然后我们可以执行下面命令查看帮助:

.\kubectl.exe --help

执行如图:

Kubernetes 部署 Flink集群模式 kubectl连接集群_云原生_04

接下来我们需要配置一下环境变量,来到设置点击系统:

Kubernetes 部署 Flink集群模式 kubectl连接集群_云原生_05

然后点击关于之后点击高级系统设置:

Kubernetes 部署 Flink集群模式 kubectl连接集群_容器_06

然后点击环境变量:

Kubernetes 部署 Flink集群模式 kubectl连接集群_容器_07

在环境变量下点击新建:

Kubernetes 部署 Flink集群模式 kubectl连接集群_容器_08

配置一个名为 KUBERNETES_HOME 的环境变量,值为你Kubernetes安装的根目录:

Kubernetes 部署 Flink集群模式 kubectl连接集群_kubernetes_09

然后找到path之后将这行配置添加到最后:

%KUBERNETES_HOME%\bin

如图:

Kubernetes 部署 Flink集群模式 kubectl连接集群_配置文件_10

最后我们重启PowerShell就可以在任何地方执行kubectl了:

Kubernetes 部署 Flink集群模式 kubectl连接集群_云原生_11

拉取配置文件

现在仅仅只是安装了kubectl,但是还没有指定kubectl去连接哪个集群。我们需要在Kubernetes主节点当中去拉取下来配置文件,这个配置文件当中一般还包含着认证信息。这个文件一般存放于主节点的 /etc/kubernetes/admin.conf 处,我们直接使用这行命令来拉取:

# 来到kubernetes的配置文件目录
cd E:\Software\Developer\Tools\Kubernetes\conf\
# 拉取配置文件,为了区分多个集群的配置文件,我们给其从新命名
scp root@192.168.1.160:/etc/kubernetes/admin.conf ./192.168.1.160.conf

拉取后如图:

Kubernetes 部署 Flink集群模式 kubectl连接集群_kubernetes_12

然后我们需要配置一个 KUBECONFIG 环境变量名字去指向这个配置文件:

Kubernetes 部署 Flink集群模式 kubectl连接集群_容器_13

然后我们重启PowerShell就能远程工作apiserver为192.168.1.160的这台主机了:

Kubernetes 部署 Flink集群模式 kubectl连接集群_kubernetes_14

Mac的安装配置

安装kubectl

因为我的Mac电脑是M1芯片的,所以我的下载地址为(注意修改自己的版本):

https://dl.k8s.io/release/v1.21.14/bin/darwin/arm64/kubectl

然后我们创建一个目录去安装kubectl,如图:

Kubernetes 部署 Flink集群模式 kubectl连接集群_环境变量_15

每个目录的作用:

  • bin: 装kubectl可执行文件的目录
  • config: 配置文件的目录

接下来我们将kubectl下载到bin目录下:

Kubernetes 部署 Flink集群模式 kubectl连接集群_云原生_16

然后我们还需要执行以下命令来为它赋予执行权限:

chmod +x kubectl

然后我们执行它(可能会被MacOS拦截,因为这个可执行文件不是来自受信任的开发者,这个问题请点击帮助按照苹果给出的文档解决):

./kubectl --help

执行如图:

Kubernetes 部署 Flink集群模式 kubectl连接集群_容器_17

这个文件我们目前还只能在本目录下执行,而我们还需要在任何位置都能执行,所以要配置环境变量。配置如下内容(注意修改你自己的安装目录):

# Set Kubernetes environment
KUBERNETES_HOME=/Users/xiaohh/Software/kubernetes
PATH=$PATH:$KUBERNETES_HOME/bin
export PATH KUBERNETES_HOME

再执行下面命令使其生效:

source /etc/profile

配置后如图,可以看到在命令行的任何位置都能使用kubectl了:

Kubernetes 部署 Flink集群模式 kubectl连接集群_容器_18

拉取配置文件

现在仅仅只是安装了kubectl,但是还没有指定kubectl去连接哪个集群。我们需要在Kubernetes主节点当中去拉取下来配置文件,这个配置文件当中一般还包含着认证信息。这个文件一般存放于主节点的 /etc/kubernetes/admin.conf 处,我们直接使用这行命令来拉取:

# 来到kubernetes的配置文件目录
cd ~/Software/kubernetes/config
# 拉取配置文件,为了区分多个集群的配置文件,我们给其从新命名
scp root@192.168.1.160:/etc/kubernetes/admin.conf ./192.168.1.160.conf

拉取后如图:

Kubernetes 部署 Flink集群模式 kubectl连接集群_配置文件_19

接下来我们还需要配置一个 KUBECONFIG 环境变量去指定kubectl使用哪个配置文件,在上一步的基础上优化环境变量:

# Set Kubernetes environment
KUBERNETES_HOME=/Users/xiaohh/Software/kubernetes
# 指定使用哪个配置文件的环境变量,注意后面的地址
KUBECONFIG=$KUBERNETES_HOME/config/192.168.1.160.conf
PATH=$PATH:$KUBERNETES_HOME/bin
export PATH KUBERNETES_HOME KUBECONFIG

修改后如图:

Kubernetes 部署 Flink集群模式 kubectl连接集群_kubernetes_20

使这个文件生效,执行这行命令:

source /etc/profile

然后就可以直接在本地操作远程集群了:

Kubernetes 部署 Flink集群模式 kubectl连接集群_kubernetes_21

kubectl命令自动补全

将下面三行添加到 /etc/profile 文件末尾:

autoload -Uz compinit
compinit
source <(kubectl completion zsh)

如图:

Kubernetes 部署 Flink集群模式 kubectl连接集群_容器_22

直接执行下面命令使其生效:

source /etc/profile

然后我们就可以使用命令补全了。

Linux的安装配置

安装kubectl

因为我的Linux虚拟机是x86_64架构的,所以我的下载地址为(注意修改自己的版本):

https://dl.k8s.io/release/v1.21.14/bin/linux/amd64/kubectl

然后我们创建一个目录去安装kubectl,如图:

Kubernetes 部署 Flink集群模式 kubectl连接集群_kubernetes_23

每个目录的作用:

  • bin: 装kubectl可执行文件的目录
  • config: 配置文件的目录

接下来我们将kubectl下载到bin目录下:

Kubernetes 部署 Flink集群模式 kubectl连接集群_环境变量_24

然后我们还需要执行以下命令来为它赋予执行权限:

chmod +x kubectl

然后我们执行它:

./kubectl --help

执行如图:

Kubernetes 部署 Flink集群模式 kubectl连接集群_环境变量_25

这个文件我们目前还只能在本目录下执行,而我们还需要在任何位置都能执行,所以要配置环境变量。配置如下内容(注意修改你自己的安装目录):

# Set Kubernetes environment
KUBERNETES_HOME=/opt/environment/kubernetes
PATH=$PATH:$KUBERNETES_HOME/bin
export PATH KUBERNETES_HOME

再执行下面命令使其生效:

source /etc/profile

配置后如图,可以看到在命令行的任何位置都能使用kubectl了:

Kubernetes 部署 Flink集群模式 kubectl连接集群_容器_26

拉取配置文件

现在仅仅只是安装了kubectl,但是还没有指定kubectl去连接哪个集群。我们需要在Kubernetes主节点当中去拉取下来配置文件,这个配置文件当中一般还包含着认证信息。这个文件一般存放于主节点的 /etc/kubernetes/admin.conf 处,我们直接使用这行命令来拉取:

# 来到kubernetes的配置文件目录
cd /opt/environment/kubernetes/config/
# 拉取配置文件,为了区分多个集群的配置文件,我们给其从新命名
scp root@192.168.1.160:/etc/kubernetes/admin.conf ./192.168.1.160.conf

拉取后如图(里面有集群的apiserver地址,还有一些集群的证书和认证信息):

Kubernetes 部署 Flink集群模式 kubectl连接集群_环境变量_27

接下来我们还需要配置一个 KUBECONFIG 环境变量去指定kubectl使用哪个配置文件,在上一步的基础上优化环境变量:

# Set Kubernetes environment
KUBERNETES_HOME=/opt/environment/kubernetes
# 指定使用哪个配置文件的环境变量,注意后面的地址
KUBECONFIG=$KUBERNETES_HOME/config/192.168.1.160.conf
PATH=$PATH:$KUBERNETES_HOME/bin
export PATH KUBERNETES_HOME KUBECONFIG

修改后如图:

Kubernetes 部署 Flink集群模式 kubectl连接集群_配置文件_28

使这个文件生效,执行这行命令:

source /etc/profile

然后就可以直接在本地操作远程集群了:

Kubernetes 部署 Flink集群模式 kubectl连接集群_容器_29

kubectl命令自动补全

首先我们需要安装bash-completion,使用以下命令安装:

# ubuntu
apt-get install bash-completion
# centos
yum install -y bash-completion

然后执行bash-completion的主脚本:

source /usr/share/bash-completion/bash_completion

生成kubectl补全脚本,并执行它:

kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null
sudo chmod a+r /etc/bash_completion.d/kubectl
source /etc/bash_completion.d/kubectl

然后我们就可以使用kubectl的命令自动补全了:

Kubernetes 部署 Flink集群模式 kubectl连接集群_环境变量_30