CentOS7使用kubeadm部署k8s-1.28集群

参考资料:生产环境

记录使用CentOS7.9进行k8s-1.28版本部署,运行时环境使用containerd,网络插件使用calic,集群搭建完成后。搭建NFS共享存储环境,测试运行pod并挂载使用持久卷。

服务器角色

主机名**IP地址 **角色基础组件
el7-linux-node-01192.168.240.11k8s-masterkubeadm,kubelet,kubectl,containerd,nfs-server
el7-linux-node-02192.168.240.12k8s-workerkubeadm,kubelet,kubectl,containerd,nfs-client
el7-linux-node-03192.168.240.13k8s-workerkubeadm,kubelet,kubectl,containerd,nfs-client

软件环境

软件名称版本
CentOS7.9
Kubernetes1.28
contianerd1.6.28

安装步骤

  1. 确认运行环境
  2. 环境准备
  3. 安装容器运行时
  4. 安装kubeadm、kubelet、kubectl
  5. 配置cgroup驱动程序

kubeadm安装配置

参考资料:安装 kubeadm

确认运行环境

服务器准备

  • CPU 2核,内存2G以上
  • 集群主机间相互通信
  • 节点之间不可以有重复主机名、MAC或product_uuid
  • 禁用交接分区

系统初始化配置

所有服务器执行

禁用selinux
# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
禁用swap
# 关闭swap分区 
swapoff -a
sed -i 's|^\(/.*swap\)|#\1|' /etc/fstab
禁用防火墙
# 关闭防火墙
systemctl stop iptables
systemctl disable iptables
升级操作系统内核
yum -y update kernel*

管理节点密钥配置

# 生成密钥
ssh-keygen -t ecdsa -f /root/.ssh/id_rsa -N ''
# 复制密钥到所有服务器
ssh-copy-id 192.168.240.11
ssh-copy-id 192.168.240.12
ssh-copy-id 192.168.240.13

主机解析配置

el-linux-node-01执行


cat >> /etc/hosts << EOF
192.168.240.11 el7-linux-node-01  
192.168.240.12 el7-linux-node-02  
192.168.240.13 el7-linux-node-03 
EOF

scp /etc/hosts 192.168.240.12:/etc/hosts
scp /etc/hosts 192.168.240.13:/etc/hosts

安装容器运行时

每台服务器安装,在此采用Docker-CE + cri-dockerd,由于kubernetes在1.24(含)以后的版本中移除了cri-dockerd。需要手动进行部署

开启网络转发

以下命令在每台服务器上执行
转发 IPv4 并让 iptables 看到桥接流量

cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# 应用 sysctl 参数而不重新启动
sudo sysctl --system

检查开启结果

lsmod | grep br_netfilter
lsmod | grep overlay

sysctl \
net.bridge.bridge-nf-call-iptables \
net.bridge.bridge-nf-call-ip6tables \
net.ipv4.ip_forward

containerd安装

以下命令在每台服务器上执行

安装containerd
# 配置docker-ce软件源
# 移除已经安装的docker版本
yum remove -y docker docker-common docker-selinux docker-engine
# 下载docker-ce软件源文件
curl -o /etc/yum.repos.d/docker-ce.repo \
    https://download.docker.com/linux/centos/docker-ce.repo
# 替换官方源地址为国内yum源地址。
sed -e 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' \
    -i.bak /etc/yum.repos.d/docker-ce.repo
# 安装docker-ce
yum makecache fast


# 安装containerd
yum install -y containerd
配置containerd
# 备份默认配置文件
mv /etc/containerd/config.toml /etc/containerd/config.toml.default
# 重新生成配置文件
containerd config default > /etc/containerd/config.toml
sed -i 's|registry.k8s.io|registry.aliyuncs.com/google_containers|g' /etc/containerd/config.toml

启动containerd
systemctl enable containerd
systemctl restart containerd
systemctl status containerd

配置客户端工具

配置crictl工具运行时接口地址(runtime-endpoint),工具使用方法参考:cri-tools/docs/crictl.md at master · kubernetes-sigs/cri-tools

# 配置crictl工具运行时接口地址(runtime-endpoint)
crictl config --set runtime-endpoint=unix:///run/containerd/containerd.sock
crictl ps

安装kubeadm、kubelet、kubectl

需要在每台机器上安装以下的软件包:

  • kubeadm:用来初始化集群的指令。
  • kubelet:在集群中的每个节点上用来启动 Pod 和容器等。
  • kubectl:用来与集群通信的命令行工具。

kubeadm 不能帮你安装或者管理 kubelet 或 kubectl, 所以你需要确保它们与通过 kubeadm 安装的控制平面的版本相匹配。 如果不这样做,则存在发生版本偏差的风险,可能会导致一些预料之外的错误和问题。 然而,控制平面与 kubelet 之间可以存在一个次要版本的偏差,但 kubelet 的版本不可以超过 API 服务器的版本。 例如,1.7.0 版本的 kubelet 可以完全兼容 1.8.0 版本的 API 服务器,反之则不可以。
参考资料:安装 kubeadm

配置Yum源

以下命令在每台服务器上执行

cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

sed -e "s|packages.cloud.google.com|mirrors.ustc.edu.cn/kubernetes|" \
    -e "s|gpgcheck=1|gpgcheck=0|" \
    -i /etc/yum.repos.d/kubernetes.repo

安装kubeadm

以下命令在每台服务器上执行

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet

使用kubeadm创建集群

创建集群步骤

  1. 准备容器镜像
  2. 初始化控制平面节点
  3. 安装Pod网络组件-calico
  4. 向集群中加入工作节点

准备容器镜像

查看镜像列表

kubeadm config images list --image-repository registry.aliyuncs.com/google_containers

image.png
由于官网镜像在国内访问不稳定,会出现访问失败。
使用国内镜像进行替换下载,在此pause使用3.9会导致集群无法初始化,还需要下载pause:3.6
以下命令在每台服务器上执行
使用自定义镜像仓库拉取镜像

kubeadm config images pull \
--image-repository registry.aliyuncs.com/google_containers

image.png
方法二

# 下载对应的镜像
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.26.1
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.26.1
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.26.1
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.26.1
docker pull registry.aliyuncs.com/google_containers/pause:3.6
docker pull registry.aliyuncs.com/google_containers/pause:3.9
docker pull registry.aliyuncs.com/google_containers/etcd:3.5.6-0
docker pull coredns/coredns:1.9.3

# 将镜像标记为官方镜像版本
docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.26.1  registry.k8s.io/kube-apiserver:v1.26.1
docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.26.1  registry.k8s.io/kube-controller-manager:v1.26.1
docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.26.1  registry.k8s.io/kube-scheduler:v1.26.1
docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.26.1  registry.k8s.io/kube-proxy:v1.26.1
docker tag registry.aliyuncs.com/google_containers/pause:3.6  registry.k8s.io/pause:3.6
docker tag registry.aliyuncs.com/google_containers/pause:3.9  registry.k8s.io/pause:3.9
docker tag registry.aliyuncs.com/google_containers/etcd:3.5.6-0  registry.k8s.io/etcd:3.5.6-0
docker tag coredns/coredns:1.9.3  registry.k8s.io/coredns/coredns:v1.9.3

初始化控制平面节点

控制节点初始化

以下命令在服务器el7-linux-01(192.168.240.11)上执行

自定义镜像进行初始化(推荐)
# 使用自定义kubernets镜像仓库进行初始化
kubeadm init \
--apiserver-advertise-address 192.168.240.11 \
--apiserver-bind-port 6443 \
--control-plane-endpoint 192.168.240.11 \
--service-cidr=10.119.0.0/16 \
--service-dns-domain="cluster.local" \
--pod-network-cidr=10.120.0.0/16 \
--image-repository registry.aliyuncs.com/google_containers 

kubeadm参数详解
参考资料:kubeadm init

参数名称参数含义默认值
–apiserver-advertise-addressAPI 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认网络接口。
–apiserver-bind-port 6443API 服务器绑定的端口。6443
–control-plane-endpoint为控制平面指定一个稳定的 IP 地址或 DNS 名称。
–service-cidr为服务的虚拟 IP 地址另外指定 IP 地址段。“10.96.0.0/12”
–service-dns-domain为服务另外指定域名“cluster.local”
–pod-network-cidr指明 Pod 网络可以使用的 IP 地址段。如果设置了这个参数,控制平面将会为每一个节点自动分配 CIDR。
–image-repository选择用于拉取控制平面镜像的容器仓库。“registry.k8s.io”
默认镜像进行初始化(不推荐)

此命令初始化时使用默认镜像仓库镜像进行初始化,由于k8s镜像仓库在国内不能进行访问,此方法不推荐

# 使用默认镜像仓库镜像进行初始化
kubeadm init \
--apiserver-advertise-address 192.168.240.11 \
--apiserver-bind-port 6443 \
--control-plane-endpoint 192.168.240.11 \
--service-cidr=10.119.0.0/16 \
--service-dns-domain="cluster.local" \
--pod-network-cidr=10.120.0.0/16 

image.png

环境变量配置
# 设置环境变量,官网建议root用户使用
export KUBECONFIG=/etc/kubernetes/admin.conf
cat <<EOF | tee -a ~/.bash_profile
export KUBECONFIG=/etc/kubernetes/admin.conf
EOF
source  ~/.bash_profile
# 复制控制配置,便于后继使用kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# cp /etc/kubernetes/admin.conf ~/.kube/config
集群节点加入

控制节点初始化时输出以下命令,用于添加管理节点与工作节点

You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:

  kubeadm join 192.168.240.11:6443 --token nwc0z8.jdfc102z4ocpgtlo \
        --discovery-token-ca-cert-hash sha256:aafd6f69a0a10e22fabdf2367ef6cc200f188fd7f4cc330b02b7ac7d256e304b \
        --control-plane

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.240.11:6443 --token nwc0z8.jdfc102z4ocpgtlo \
        --discovery-token-ca-cert-hash sha256:aafd6f69a0a10e22fabdf2367ef6cc200f188fd7f4cc330b02b7ac7d256e304b

工作节点加入集群
kubeadm join 192.168.240.11:6443 --token nwc0z8.jdfc102z4ocpgtlo \
        --discovery-token-ca-cert-hash sha256:aafd6f69a0a10e22fabdf2367ef6cc200f188fd7f4cc330b02b7ac7d256e304b

image.png

加入集群令牌管理

上面的输出结果中的token令牌时效为23h,超过时效后可以通过以下命令重新获取

kubeadm token create --print-join-command

image.png
查看已经创建的令牌列表

kubeadm token list

image.png

kubeadm集群重置

kubeadm重置集群配置命令,如在安装过程中需要对集群进行重置,使用以下命令完成操作

kubeadm reset 

docker ps -qa |xargs docker rm -f

安装网络组件-Calico

你必须部署一个基于 Pod 网络插件的 容器网络接口 (CNI),以便你的 Pod 可以相互通信。 在安装网络之前,集群 DNS (CoreDNS) 将不会启动。

  • 注意你的 Pod 网络不得与任何主机网络重叠: 如果有重叠,你很可能会遇到问题。 (如果你发现网络插件的首选 Pod 网络与某些主机网络之间存在冲突, 则应考虑使用一个合适的 CIDR 块来代替, 然后在执行 kubeadm init 时使用 --pod-network-cidr 参数并在你的网络插件的 YAML 中替换它)。
  • 常见的网络插件有flannel,Calico,Canal,Weave,各网络组件之间的比较参考资料:Kubernetes CNI网络最强对比:Flannel、Calico、Canal和Weave_文化 & 方法_Rancher_InfoQ精选文章

Flannel项目地址:https://github.com/flannel-io/flannel
Calico项目地址:https://github.com/projectcalico/calico
本次实验使用Calico组件进行网络配置

cd /root
mkdir -pv k8s/calico
cd k8s/calico
wget https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/tigera-operator.yaml
wget https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/custom-resources.yaml
sed -i "s|192.168|10.120|" custom-resources.yaml
kubectl create -f tigera-operator.yaml
kubectl create -f custom-resources.yaml

# #
# kubctl init --pod-network-cidr=10.224.0.0/16 \
# --cri-socket unix:///var/run/cri-dockerd.sock

监测calico各个pods运行状态
应用calico配置文件后,使用watch 监测calico各个pods运行状态,直到所有pods为running。

watch kubectl get pods -n calico-system

image.png

加入工作节点到集群

检查控制节点状态是否为ready状态;

kubectl get nodes

image.png
由于使用了cri-dockerd,需要指定 cri-socket参数用于加入集群工作节点

kubeadm join 192.168.240.11:6443 --token 0q0uyq.biivqkdgghcp8vl3 \
        --discovery-token-ca-cert-hash sha256:02c0f4c894db2e1e00084fa41a8309458c97b3945f545fbb01df3fca3d0ea9ad 

image.png
检查集群节点状态

kubectl get nodes

image.png

从集群删除工作节点

参考资料:安全地清空一个节点

下线待删除节点

在控制节点驱逐待删除的工作节点

# 查询集群中的节点
kubectl get nodes

# 清空指定节点的服务
# 命令格式:
# kubectl drain --ignore-daemonsets <节点名称>
kubectl drain --ignore-daemonsets el7-linux-node-03

# 下线指定节点
# 命令格式:
# kubectl uncordon <node name>
kubectl uncordon el7-linux-node-03

image.png

从集群中删除节点

在控制节点执行以下命令

kubectl delete node el7-linux-node-03

image.png

清理工作节点

在待退出集群的工作节点执行以下命令

重置节点

kubeadm reset

image.png

停止服务

停止kubelet、运行时服务(containerd、docker等)、删除相关的工作目录

# 停止kubelet服务
systemctl stop kubelet
systemctl disable kubelet

# 停止containerd服务
systemctl stop containerd
systemctl disable containerd

# 停止docker运行时
systemctl stop docker docker.socket 
systemctl disable docker docker.socket 

删除工作目录

rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/

删除相关网卡

安装网络配置工具

yum -y install net-tools

停用并删除网卡

ifconfig cni0 down
ip link delete cni0

ifconfig flannel.1 down
ip link delete flannel.1

ifconfig vxlan.calico down
ip link delete vxlan.calico

ifconfig docker0 down
ip link delete docker0

持久化存储配置

使用NFS进行持久化存储

从实验角度考虑,使用NFS安装配置方便简单,本文中使用nfs进行持久化存储的配置与使用。假设所有节点使用持久化存储目录均为:/www/server/k8s/data
参考资料:
存储类 K8S持久化存储:NFS+StorageClass实现动态供给

NFS服务安装配置

NFS服务安装

在所有服务器执行

yum -y install nfs-utils
NFS服务配置

在el7-linux-node-01上启用NFS服务,并配置NFS共享;

# 创建共享存储目录
mkdir -pv /www/server/k8s/data
echo "nfs_test" > /www/server/k8s/data/nfs.txt

# 配置nfs共享目录
cat >> /etc/exports << eof
/www/server 192.168.240.0/24(rw,no_root_squash,sync)
eof
exportfs -av

# 启动nfs服务
systemctl start nfs-server
systemctl enable nfs-server
NFS挂载测试

在el7-linux-node-02和el7-linux-node-03上执行以下命令挂载NFS共享目录

# 创建
mkdir -pv /www/server/k8s/data
#mount -t nfs 192.168.240.11:/www/server/k8s/data /www/server/k8s/data

# 写入磁盘挂载配置文件
cat << EOF | tee -a /etc/fstab
192.168.240.11:/www/server/k8s/data /www/server/k8s/data nfs defaults,_netdev  0 0
EOF

cat /etc/fstab
mount -a 

image.png
查看文件共享内容

ll /www/server/k8s/data/
cat /www/server/k8s/data/nfs.txt

image.png

在Pod中挂载NFS

参考资料:NFS卷

直接挂载使用

配置文件如下

# 创建nginx共享目录
mkdir -pv /www/server/k8s/data/nginx/html/
# 创建nginx首页文件
echo "hello k8s nfs test" > /www/server/k8s/data/nginx/html/index.html
# 创建nginx启动配置文件,并挂载nfs到nginx站点目录
cat << EOF | tee /root/k8s/nginx.yml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-direct-nfs
spec:
  containers:
  - image: nginx
    name: test-nginx
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: test-volume
  volumes:
  - name: test-volume
    nfs:
      server: 192.168.240.11
      path: /www/server/k8s/data/nginx/html
      readOnly: false
EOF
# 启动pod
kubectl apply -f /root/k8s/nginx.yml

image.png
检查挂载结果

# 查看pod运行详情,并查看pod的ip地址
kubectl get pod  -o wide nginx-direct-nfs
# 使用curl请求nginx服务,是否输出测试页面内容
curl $(kubectl get pod -o wide nginx-direct-nfs |tail -n 1|awk '{print $6}')

image.png

使用持久卷挂载NFS

参考资料:存储类-nfs https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes/#claims-as-volumesDynamic sub-dir volume provisioner on a remote NFS server.
使用持久卷挂载时,挂载关系如下图所示:Pod -> pvc(持久卷申领[PersistentVolumeClaim]) -> pv(PersistentVolume[provisioner]) -> nfs(StorageClass)

截图_选择区域_20240222091108.png

下载NFS subdir 外部驱动
# 下载nfs外部署驱动部署文件
cd /root
git clone https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner.git
# 拷贝部署文件到时部署目录
cd nfs-subdir-external-provisioner
cp -a deploy /root/k8s/nfs-subdir-external-provisioner
cd /root/k8s/nfs-subdir-external-provisioner

替换驱动配置文件

# 由于nfs-subdir-external-provisioner镜像仓库地址registry.k8s.io国内无法访问,
# 在此将其替换为公司镜像仓库地址,此镜像已经拉取并上传到公司
sed -i 's|registry.k8s.io/sig-storage|hub.daqsoft.com:5000/daqsoft/k8s|g' deployment.yaml

# 替换nfs服务器配置信息
sed -i 's|10.3.243.101|192.168.240.11|g' deployment.yaml
sed -i 's|/ifs/kubernetes|/www/server/k8s/data|g' deployment.yaml
部署nfs驱动、sc、pv、pvc
kubectl apply -f rbac.yaml
kubectl apply -f deployment.yaml
kubectl apply -f class.yaml
kubectl apply -f test-claim.yaml
kubectl apply -f test-pod.yaml

image.png

检查部署状态
kubectl get sc -o wide
kubectl get pv -o wide
kubectl get pvc -o wide test-claim
kubectl get pod -o wide test-pod

image.png

检查测试文件

test-pod.yaml文件内容

kind: Pod
apiVersion: v1
metadata:
  name: test-pod
spec:
  containers:
  - name: test-pod
    image: busybox:1.28
    command:
      - "/bin/sh"
    args:
      - "-c"
      - "touch /mnt/SUCCESS && exit 0 || exit 1"   #pod运行后在/mnt目录中创建success文件
    volumeMounts:
      - name: nfs-pvc
        mountPath: "/mnt"
  restartPolicy: "Never"
  volumes:
    - name: nfs-pvc
      persistentVolumeClaim:
        claimName: test-claim

检查nfs服务目录中是否有test-pod创建的文件,持久卷在nfs服务中创建的目录名称为:命名空间-pvc名称-pv名称,相关信息通过get pv进行获取;如我们创建的pvc(test-claim)在default空间下,其对应nfs中的目录名称为:default-test-claim-pvc-234376c4-995b-4f97-b449-952c4a90dd5e

ls /www/server/k8s/data/default-test-claim-pvc-234376c4-995b-4f97-b449-952c4a90dd5e

image.png

  • 28
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 在CentOS系统中使用kubeadm安装Kubernetes 1.24版本的全部命令如下: 1. 安装必需的包和软件: ``` sudo yum install -y yum-utils device-mapper-persistent-data lvm2 ``` 2. 添加Kubernetes存储库: ``` sudo yum-config-manager --add-repo https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ ``` 3. 安装kubeadmkubelet和kubectl: ``` sudo yum install -y kubeadm-1.24.0 kubelet-1.24.0 kubectl-1.24.0 ``` 4. 启动并启用kubelet服务: ``` sudo systemctl start kubelet && sudo systemctl enable kubelet ``` 5. 初始化集群: ``` sudo kubeadm init --kubernetes-version=1.24.0 --pod-network-cidr=10.244.0.0/16 ``` 6. 配置kubectl: ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 7. 安装网络插件: ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml ``` 8. 加入节点: ``` kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash> ``` 请注意,在实际使用时,您需要替换`<control-plane-host>`、`<control-plane-port>`、`<token>`和`<hash>`的值。 ### 回答2: 在CentOS系统中使用kubeadm安装Kubernetes 1.24版本需要执行以下步骤: 1. 确保系统已经安装CentOS操作系统并更新到最新版本。 2. 安装Docker,首先安装Docker的相关依赖: ``` sudo yum install -y yum-utils device-mapper-persistent-data lvm2 ``` 接下来,添加Docker的yum源并安装Docker: ``` sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io ``` 启动Docker并设置为开机自启动: ``` sudo systemctl start docker sudo systemctl enable docker ``` 3. 安装kubeadmkubelet和kubectl,添加Kubernetes的yum源: ``` sudo tee /etc/yum.repos.d/kubernetes.repo <<EOF [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch 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 exclude=kube* EOF ``` 安装kubeadmkubelet和kubectl: ``` sudo yum install -y kubeadm-1.24.0 kubelet-1.24.0 kubectl-1.24.0 --disableexcludes=kubernetes ``` 启动kubelet并设置为开机自启动: ``` sudo systemctl start kubelet sudo systemctl enable kubelet ``` 4. 创建Kubernetes集群,首先选择一个主节点,执行以下命令初始化主节点: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 初始化完成后,根据输出的提示执行以下命令设置kubeconfig: ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 安装网络插件(这里以Flannel为例): ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 接下来,将其他节点加入集群,运行输出的`kubeadm join`命令即可。 通过以上步骤,在CentOS系统中使用kubeadm成功安装了Kubernetes 1.24版本。 ### 回答3: 在CentOS系统上使用kubeadm安装Kubernetes 1.24版本,可以按照以下步骤操作: 1. 确保系统已经预先安装好Docker,并且启动Docker服务。 ``` systemctl start docker systemctl enable docker ``` 2. 更新系统的软件包,并安装所需的依赖项。 ``` yum update yum install -y curl wget kubelet kubeadm kubectl ``` 3. 配置kubeadm使用国内镜像源,以提高下载速度。 ``` echo "KUBELET_EXTRA_ARGS=--image-repository=registry.aliyuncs.com/google_containers" > /etc/sysconfig/kubelet ``` 4. 初始化kubeadm并指定使用的版本。 ``` kubeadm init --kubernetes-version=1.24.0 ``` 5. 完成初始化后,根据kubeadm提供的输出信息执行以下命令,将kubectl与集群进行连接。 ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 6. 部署Pod网络插件,以便集群中的Pod可以相互通信。 这里以Calico网络插件为例: ``` kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml ``` 7. 等待一段时间,直到所有的节点状态都变为Ready。 ``` kubectl get nodes ``` 8. 完成上述步骤后,Kubernetes集群已经成功安装。 请注意,以上步骤仅适用于CentOS系统上使用kubeadm安装Kubernetes 1.24版本。具体版本号和网络插件可以根据需要进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值