0


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
  1. 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
标签: kubernetes linux 容器

本文转载自: https://blog.csdn.net/tiger0310119/article/details/138719893
版权归原作者 藥瓿亭 所有, 如有侵权,请联系我们删除。

“Linux 系统中安装并设置Kubectl”的评论:

还没有评论