前言:
出于安全考虑,一般都不会直接在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、基于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
版权归原作者 藥瓿亭 所有, 如有侵权,请联系我们删除。