centos系统如何安装kubectl和部署kube-apiserver

1.使用 yum 安装(推荐)

添加 Kubernetes 软件源:

首先,你需要添加 Kubernetes 的官方 YUM 软件源。这可以通过下载并安装 kubernetes.repo 文件来实现。

shell

shell 复制代码
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

安装 kubectl:

使用 yum 安装 kubectl。

sudo yum install -y kubectl

验证安装:

验证 kubectl 是否正确安装,并检查版本。

kubectl version --client

2.使用 curl 和 tar 安装

下载 kubectl:

使用 curl 下载最新版本的 kubectl。

java 复制代码
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

添加执行权限:

为下载的 kubectl 文件添加执行权限。

java 复制代码
chmod +x ./kubectl

移动到 /usr/local/bin:

将 kubectl 移动到 /usr/local/bin 目录,使其全局可用。

sudo mv ./kubectl /usr/local/bin/kubectl

验证安装:

验证 kubectl 是否正确安装,并检查版本。

shell

kubectl version --client

部署kube-apiserver

安装 kube-apiserver

首先,你需要获取 Kubernetes 的二进制文件。你可以从 Kubernetes 的 GitHub 仓库下载所需的版本。以下命令展示了如何下载 Kubernetes 1.29.4 版本的二进制文件并解压:

java 复制代码
wget https://github.com/kubernetes/kubernetes/archive/v1.29.4.tar.gz
tar -zxvf v1.29.4.tar.gz
cd kubernetes-1.29.4

然后,将 kube-apiserver 拷贝到 /usr/local/bin 目录下:

java 复制代码
sudo cp _output/bin/kube-apiserver /usr/local/bin/
  1. 准备 kube-apiserver 的配置文件
    创建 kube-apiserver 的配置文件 /etc/kubernetes/manifests/kube-apiserver.yaml:
java 复制代码
cat <<EOF | sudo tee /etc/kubernetes/manifests/kube-apiserver.yaml
apiVersion: v1
kind: Pod
metadata:
  name: kube-apiserver
  namespace: kube-system
spec:
  hostNetwork: true
  containers:
  - name: kube-apiserver
    image: k8s.gcr.io/kube-apiserver:v1.29.4
    command:
    - kube-apiserver
    - --advertise-address=<MASTER_IP> # 替换为 Master 节点的 IP 地址
    - --allow-privileged=true
    - --apiserver-count=3
    - --authorization-mode=Node,RBAC
    - --client-ca-file=/etc/kubernetes/ssl/ca.pem
    - --etcd-cafile=/etc/kubernetes/ssl/ca.pem
    - --etcd-certfile=/etc/kubernetes/ssl/etcd-client.pem
    - --etcd-keyfile=/etc/kubernetes/ssl/etcd-client-key.pem
    - --etcd-servers=https://<ETCD_IP>:2379 # 替换为 etcd 服务器的地址
    - --insecure-bind-address=0.0.0.0
    - --kubelet-client-certificate=/etc/kubernetes/ssl/apiserver-kubelet-client.crt
    - --kubelet-client-key=/etc/kubernetes/ssl/apiserver-kubelet-client.key
    - --kubelet-https=true
    - --service-account-key-file=/etc/kubernetes/ssl/ca-key.pem
    - --service-cluster-ip-range=10.254.0.0/16
    - --tls-cert-file=/etc/kubernetes/ssl/apiserver.crt
    - --tls-private-key-file=/etc/kubernetes/ssl/apiserver.key
    - --service-node-port-range=30000-50000
    - --audit-log-path=/var/log/kube-audit/audit.log
    - --audit-log-maxage=30
    - --audit-log-maxbackup=3
    - --audit-log-maxsize=100
    - --v=2
EOF

确保替换 <MASTER_IP> 和 <ETCD_IP> 为你的实际 IP 地址。

  1. 创建 kube-apiserver 服务
    创建 kube-apiserver 的 systemd 服务文件:

shell

sudo vim /usr/lib/systemd/system/kube-apiserver.service

添加以下内容:

java 复制代码
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=/etc/kubernetes/config/kube-apiserver.conf
ExecStart=/usr/local/bin/kube-apiserver $KUBE_APISERVER_OPTS
Restart=on-failure
[Install]
WantedBy=multi-user.target
  1. 启动 kube-apiserver 服务
java 复制代码
sudo systemctl daemon-reload
sudo systemctl enable kube-apiserver
sudo systemctl start kube-apiserver
  1. 验证 kube-apiserver 是否运行

sudo systemctl status kube-apiserver

相关推荐
游戏开发爱好者85 分钟前
App Store 上传 IPA 自动化,.p8 密钥认证与 CI/CD 接入实战
android·运维·ci/cd·小程序·uni-app·自动化·iphone
天疆说13 分钟前
04 稳定性与性能调优实录:OOM 崩溃、并发槽位、前缀缓存与 DSpark 调参
linux·运维·缓存
微硬创新13 分钟前
大点数模拟量采集落地:耐达讯自动化32路0-20mA适配PROFINET总线实践解析
运维·人工智能·网络协议·自动化·信息与通信
星卯教育tony14 分钟前
NOI Linux 2.0 服务器多用户网页桌面部署方案(腾讯云轻量Ubuntu20.04专属版 CSP复赛比赛环境搭建免安装虚拟机 )
linux·服务器·腾讯云
GIS数据转换器1 小时前
村镇无人机物流配送与跨域监测一体化平台
大数据·运维·人工智能·科技·无人机
Forever Nore1 小时前
LeetCode 14 最长公共前缀 - 纵向扫描
linux·服务器·leetcode
拂拉氏1 小时前
【知识讲解】 Linux权限相关知识讲解
linux·权限
倔强的石头1061 小时前
飞牛OS部署Mtab:Docker搭建自托管书签导航并实现远程访问
运维·docker·容器
Shadow(⊙o⊙)1 小时前
Linux网络部分——TCP协议服务端客户端交互接口,入门级硬核解析1.0
linux·网络·tcp/ip
桑榆4166 小时前
双系统(Windows + Ubuntu)安装流程
linux·windows·ubuntu