Linux 系统中安装并设置Kubectl

前言:

       出于安全考虑,一般都不会直接在K8S集群的节点上操作,而是通过一台跳板机远程控制。

       下面我们在一台linux设备安装配置kubectl,使其能够访问指定K8S集群。

要求:

        官方要求kubectl 版本和集群版本之间的差异必须在一个小版本号内。 例如:v1.29 版本的客户端能与 v1.28、 v1.29 和 v1.30 版本的控制面通信。

        为了避免出现莫名奇妙的问题,最好与集群版本保持一致。

#查看K8S集群使用kubectl版本
root@master:/# kubectl version 
Client Version: v1.29.0
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.29.0

一、开始安装:

1、用 curl 在 Linux 系统中安装 kubectl 

1.1、用以下命令在 Linux x86-64 中下载 1.29.3 版本(其他版本请替换版本号):

curl -LO https://dl.k8s.io/release/v1.29.3/bin/linux/amd64/kubectl

1.2、验证该可执行文件(可选步骤)

下载 kubectl 校验和文件(下载的 kubectl 与校验和文件版本必须相同):

curl -LO "https://dl.k8s.io/release/v1.29.3/bin/linux/amd64/kubectl.sha256"

基于校验和文件,验证 kubectl 的可执行文件: 

echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check

验证通过时,输出为:

kubectl: OK

验证失败时,sha256 将以非零值退出,并打印如下输出:

kubectl: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match

 1.3、安装 kubectl

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

 说明:

        如果没有系统的 root 权限,可以将 kubectl 安装到目录 ~/.local/bin 中:

chmod +x kubectl
mkdir -p ~/.local/bin
mv ./kubectl ~/.local/bin/kubectl

#将 ~/.local/bin 附加(或前置)到 $PATH
echo 'export PATH="~/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

1.4、执行测试,查看版本: 

kubectl version --client

2、用原生包管理工具安装

2.1、基于RedHat的发行版

2.1.1、 添加 Kubernetes 的 yum 仓库。如果你想使用 v1.29 之外的 Kubernetes 版本, 将下面命令中的  v1.29 替换为所需的次要版本。

# 这会覆盖 /etc/yum.repos.d/kubernetes.repo 中现存的所有配置
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key
EOF

 说明:

        要将 kubectl 升级到别的次要版本,你需要先升级 /etc/yum.repos.d/kubernetes.repo 中的版本,再运行 yum update 命令。 更详细的步骤可以在更改 Kubernetes 软件包存储库中找到。

2.1.2、使用 yum 安装 kubectl:

sudo yum install -y kubectl-1.29.3

2. 2、基于Dibian的发行版

2.2.1、 更新 apt 包索引,并安装使用 Kubernetes apt 仓库所需要的包:

sudo apt-get update
# apt-transport-https 可以是一个虚拟包;如果是这样,你可以跳过这个包
sudo apt-get install -y apt-transport-https ca-certificates curl

2.2.2、下载 Kubernetes 软件包仓库的公共签名密钥。 同一个签名密钥适用于所有仓库,因此你可以忽略 URL 中的版本信息:

# 如果 `/etc/apt/keyrings` 目录不存在,则应在 curl 命令之前创建它,请阅读下面的注释。
# sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # allow unprivileged APT programs to read this keyring   

说明:

在低于 Debian 12 和 Ubuntu 22.04 的发行版本中,/etc/apt/keyrings 默认不存在。 应在 curl 命令之前创建它。

2.2.3、添加合适的 Kubernetes apt 仓库。如果你想用 v1.29 之外的 Kubernetes 版本, 请将下面命令中的 v1.29 替换为所需的次要版本:

# 这会覆盖 /etc/apt/sources.list.d/kubernetes.list 中的所有现存配置
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list   # 有助于让诸如 command-not-found 等工具正常工作

说明:

要将 kubectl 升级到别的次要版本,你需要先升级 /etc/apt/sources.list.d/kubernetes.list 中的版本, 再运行 apt-get update 和 apt-get upgrade 命令。 更详细的步骤可以在更改 Kubernetes 软件包存储库中找到。

2.2.4、更新 apt 包索引,然后安装 kubectl:

sudo apt-get update
sudo apt-get install -y kubectl-1.29.3

二、验证 kubectl 配置

       为了让 kubectl 能发现并访问 Kubernetes 集群,你需要一个kubeconfig文件。 通常,kubectl的配置信息存放于文件 ~/.kube/config 中。 

mkdir ~/.kube                               #将集群的config文件放在此目录
kubectl cluster-info
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Unable to connect to the server: dial tcp: lookup master on 192.168.10.2:53: no such host

 将配置文件config里server项master替换成master主机IP

server: https://master:6443

 或者在hosts文件添加master主机的解析

echo '192.168.10.60 master' >> /etc/hosts

 再次验证,成功链接到指定K8S集群

[root@test02 ~]# kubectl cluster-info
Kubernetes control plane is running at https://master:6443
CoreDNS is running at https://master:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
[root@test02 ~]# 
[root@test02 ~]# kubectl get node
NAME     STATUS     ROLES           AGE   VERSION
master   Ready      control-plane   85d   v1.29.0
node01   NotReady   worker          85d   v1.29.0
node02   NotReady   worker          85d   v1.29.0
[root@test02 ~]# 
[root@test02 ~]# kubectl get pod -n kube-system
NAME                                   READY   STATUS        RESTARTS         AGE
coredns-857d9ff4c9-w8hxr               1/1     Running       0                108m
coredns-857d9ff4c9-x5rj5               1/1     Running       0                108m
etcd-master                            1/1     Running       10 (115m ago)    85d
kube-apiserver-master                  1/1     Running       10 (115m ago)    85d
kube-controller-manager-master         1/1     Running       11 (115m ago)    85d
kube-proxy-5kwqj                       1/1     Running       10 (115m ago)    85d
kube-proxy-7p48k                       1/1     Running       9 (2d12h ago)    85d
kube-proxy-f4lgd                       1/1     Running       0                85d
kube-scheduler-master                  1/1     Running       11 (115m ago)    85d

相关推荐

  1. Linux 系统安装设置Kubectl

    2024-05-13 15:20:03       5 阅读
  2. Linux 系统安装设置 kubectl

    2024-05-13 15:20:03       23 阅读
  3. Linux 安装 kubectl

    2024-05-13 15:20:03       30 阅读
  4. docker和kubectl客户端安装Linux

    2024-05-13 15:20:03       11 阅读
  5. 如何在Linux系统安装MySQL

    2024-05-13 15:20:03       22 阅读
  6. Linux系统安装 RPM 包

    2024-05-13 15:20:03       5 阅读

最近更新

  1. .Net Core WebAPI参数的传递方式

    2024-05-13 15:20:03       0 阅读
  2. QT--气泡框的实现

    2024-05-13 15:20:03       0 阅读
  3. LeetCode 968.监控二叉树 (hard)

    2024-05-13 15:20:03       0 阅读
  4. leetcode热题100.完全平方数(动态规划进阶)

    2024-05-13 15:20:03       0 阅读
  5. leetcode328-Odd Even Linked List

    2024-05-13 15:20:03       0 阅读
  6. C 语言设计模式(结构型)

    2024-05-13 15:20:03       0 阅读
  7. v-if 与 v-show(vue3条件渲染)

    2024-05-13 15:20:03       0 阅读
  8. kafka防止消息丢失配置

    2024-05-13 15:20:03       0 阅读

热门阅读

  1. C++ vector的使用

    2024-05-13 15:20:03       4 阅读
  2. Hive的数据类型

    2024-05-13 15:20:03       2 阅读
  3. C# 中string和stringbuilder区别

    2024-05-13 15:20:03       3 阅读
  4. 2024年安全员C证报名条件

    2024-05-13 15:20:03       2 阅读
  5. ShapeableImageView圆角效果不对

    2024-05-13 15:20:03       3 阅读
  6. APK签名

    APK签名

    2024-05-13 15:20:03      3 阅读
  7. 基于springboot的校园闲置物品交易系统

    2024-05-13 15:20:03       5 阅读
  8. uniapp引用第三方组件样式无法穿透

    2024-05-13 15:20:03       4 阅读