返回顶部
首页 > 资讯 > 服务器 >使用kubeadm部署多节点集群
  • 155
分享到

使用kubeadm部署多节点集群

2024-04-02 19:04:59 155人浏览 独家记忆
摘要

命令行工具 在 kubernetes 中,主要有三个日常使用的工具,这些工具使用 kube 前缀命名,这三个工具如下: kubeadm:用来初始化集群的指令,能够创建集群已经添加新的

命令行工具

kubernetes 中,主要有三个日常使用的工具,这些工具使用 kube 前缀命名,这三个工具如下:

  • kubeadm:用来初始化集群的指令,能够创建集群已经添加新的节点。可用其它部署工具替代。
  • kubelet:在集群中的每个节点上用来启动 Pod 和容器等,每个节点必须有,相对于节点与集群的网络代理。
  • kubectl:用来与集群通信/交互的命令行工具,与 kubernetes api-Server 通讯,是我们操作集群的客户端。

kubelet、kubectl,kubelet 负责集群中节点间的通讯,kubectl 供用户输入命令控制集群,而且 kubeadm 则是创建集群、添加减少节点的工具。

安装命令行工具

命令行工具是每个节点都需要安装的, kubectl、kubelet 两个是必需的组件,而 kubeadm 则可以被代替。kubeadm 是 Kubenetes 官方推荐的部署工具,但由于网络等各方面原因,中文社区中也开发了一些替代项目,例如 Kubesphere(https://kubesphere.com.cn/),可在国内部署 Kubernetes,省去网络问题。

通过软件仓库安装

下面介绍如何 通过 Google 的源下载安装工具包。

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

sudo apt-get update
sudo apt-get install -y apt-transport-Https ca-certificates curl

下载 Google Cloud 公开签名秘钥:

sudo curl -fsSLo /usr/share/keyrings/kubernetes-arcHive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

添加 Kubernetes apt 仓库:

echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

注:如果是国内服务器,请忽略以上两步,使用以下命令解决:

apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并定其版本:

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

执行命令检查是否正常:

kubeadm --help

不同操作系统

只是这里介绍一下 ubuntuCentos 不同的安装方法,已经通过前面的安装方法安装好,则不需要理会这一小节。

Ubuntu 和 Debain 等系统可以使用以下命令通过软件仓库安装:

sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2 curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl

Centos、RHEL 等系统可以使用以下命令通过软件仓库安装:

cat <<EOF > /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
yum install -y kubelet kubeadm kubectl

集群管理

创建 kubernetes 集群

Kubeadm 是一个创建管理工具,主要提供了 kubeadm init 和 kubeadm join 两个命令,作为创建 Kubernetes 集群的 “快捷途径” 的最佳实践。

Kubernetes 集群由 Master 和 Worker 两种节点组成,Master 节点负责控制集群所有的节点。

注意,本教程集群中的节点应当都是内网可互通的服务器,这些服务器之间可以通过内网相互访问。如果是服务器之间通过公网相互通讯的,操作方法请查询其它教程。

1,创建 Master

执行 hostname -i 查看此 node 的 ip。

我们初始化一个 API Server 服务,绑定地址为 192.168.0.8(按照你的ip改)。此步骤创建了一个 master 节点。

注:可以直接使用 kubeadm init,它会自动使用默认网络ip。

kubeadm init
# 或 kubeadm init --apiserver-advertise-address 192.168.0.8
# 或 kubeadm init --apiserver-advertise-address $(hostname -i)

部署失败,可以参考下面两个命令,查看失败原因。

systemctl status kubelet
journalctl -xeu kubelet

常见与 Docker 有关的错误可参考: https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker

完成后,会提示一些信息,在提示的内容中找到:

kubeadm join 192.168.0.8:6443 --token q25z3f.v5uo5bphvgxkjnmz \
    --discovery-token-ca-cert-hash sha256:0496adc212112b5485d0ff12796f66b29237d066fbc1d4d2c5e45e6add501f64

保存这段信息下来备用,后面加入节点时需要使用到。

如果有提示 Alternatively, if you are the root user, you can run:则你还需要执行下面的命令。

export KUBECONFIG=/etc/kubernetes/admin.conf

[Info] 提示

admin.conf 是连接 Kubernetes 的认证文件,通过此文件才能连接到 kubernetes,kubectl 也需要这个文件;在 linux 中,使用 KUBECONFIG 环境变量知道认证文件的所在。

Linux 中每个用户的环境变量是不同的,如果切换了用户,则也需要设置 KUBECONFIG 环境变量;如果要在别的节点上连接集群,则可以把这个文件复制过去。

后面的操作都需要 admin.conf 文件,否则会报 The connection to the server localhost:8080 was refused - did you specify the right host or port? 。

由于 export 的环境变量不能持久化,请打开 ~/.bashrc 文件,把这个命令加到文件最后面。

[Info] 提示

为了保护 /etc/kubernetes/admin.conf,避免直接指向,建议每个用户复制一次此文件到用户目录下,其命令如下:

mkdir -p $HOME/.kube
cp -f /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

2,初始化网络

这一步不是必需的,不过一般来说,部署 Kubernetes 会配置网络,否则会节点之间不能相互访问,读者可以跟着做一次,在后面的章节中我们在一探究竟。

通过远程配置文件初始化网络,需要从第三方拉取一个 yaml 文件。

kubectl apply  -f  "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"  --namespace=kube-system
#  --namespace=kube-system 表示插件放到 kube-system 命名空间中运行

成功的话会提示:

serviceaccount/weave-net created
clusterrole.rbac.authorization.k8s.io/weave-net created
clusterrolebinding.rbac.authorization.k8s.io/weave-net created
role.rbac.authorization.k8s.io/weave-net created
rolebinding.rbac.authorization.k8s.io/weave-net created
daemonset.apps/weave-net created

我们也可以手动配置,执行 kubectl version 查看版本号,找到 gitVersion:v1.21.1 ,替换 yaml 文件的地址 https://cloud.weave.works/k8s/net?k8s-version=v1.21.1,然后执行 kubectl apply -n kube-system -f net.yaml 即可。

3,加入集群

前面已经创建了 Master 节点,接下来将另一个服务器以 Worker 节点的方式加入集群中。如果读者只有一台服务器,则可以跳过这个步骤。

当节点加入 kubeadm 初始化的集群时,双方需要建立双向信任,分为发现(Worker信任Master) 和 TLS 引导(Master信任待加入Worker)两部分。目前有两种加入方式,一种是通过令牌加入,一种是通过 kubeconfig 文件加入。

格式:

kubeadm join --discovery-token abcdef.xxx {IP}:6443 --discovery-token-ca-cert-hash sha256:xxx
kubeadm join--discovery-file file.conf

在第二个节点中,使用之前备份好的命令,直接执行,加入集群,格式如下命令所示

kubeadm join 192.168.0.8:6443 --token q25z3f.v5uo5bphvgxkjnmz \
    --discovery-token-ca-cert-hash sha256:0496adc212112b5485d0ff12796f66b29237d066fbc1d4d2c5e45e6add501f64

复制粘贴时,要注意,可能会由于 \ 换行符,导致粘贴时,多了一个小数点,导致报错。

粘贴出错

可能碰到的问题

查看 docker 版本:yum list installed | grep docker 和 docker version

如果部署过程中出现 failed to parse kernel config: unable to load kernel module,也说明了 docker 版本太高,需要降级。

如果服务器装了 dnf,那么降级 docker 版本的命令:

dnf remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
dnf -y install dnf-plugins-core
dnf install docker-ce-18.06.3.ce-3.el7 docker-ce-cli containerd.io

不行的话就按照 https://docs.docker.com/engine/install/centos/ 降级,或者自行按照其它方法处理。

注意,docker version 会看到 client 和 server 版本,两者的版本号可能不一致。

删除节点

在生产环境中,由于节点上已经部署着服务,因此直接删除节点,可能会导致严重的故障问题。因此需要移除一个节点时,首先要在此节点上驱逐所有 Pods,Kubernetes 会自动将此节点上的 Pod 转移到其它节点上部署(第三章会讲)。

获取集群中的所有节点,找到需要驱逐的节点名称。

kubectl get nodes

驱逐此节点上所有的 Pod:

kubectl drain {node名称}

虽然驱逐了节点上所有的服务,但是节点依然在集群中,只是 Kubernetes 不会再部署 Pod 到此节点上。如果需要恢复此节点,允许继续部署 Pod,可使用:

kubectl uncordon {节点名称}

关于驱逐,后面的章节会学习到。

注:驱逐 Pod,并一定能够驱逐所有 Pod,有些 Pod 可能不会被清除。

最终删除此节点:

kubectl delete node {节点名称}

集群删除了此节点后,节点上还保留着一些数据,可以继续清除环境。

清除环境

如果步骤做错了想重来,或者移除节点需要清除环境,可以执行 kubeadm reset [flags] 命令。

注:只执行 kubeadm reset 命令无效。

[flags] 有四种类型:

preflight              Run reset pre-flight checks
update-cluster-status  Remove this node from the ClusterStatus object.
remove-etcd-member     Remove a local etcd member.
cleanup-node           Run cleanup node.

我们需要执行:

kubeadm reset cleanup-node 
kubeadm reset

即可在当前服务器上清除 Kubernetes 残留的 容器或者其它数据。

到此这篇关于使用kubeadm部署多节点集群的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 使用kubeadm部署多节点集群

本文链接: https://lsjlt.com/news/145037.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用kubeadm部署多节点集群
    命令行工具 在 kubernetes 中,主要有三个日常使用的工具,这些工具使用 kube 前缀命名,这三个工具如下: kubeadm:用来初始化集群的指令,能够创建集群已经添加新的...
    99+
    2024-04-02
  • kubeadm中如何部署kubernetes集群
    kubeadm中如何部署kubernetes集群,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、环境要求这里使用RHEL7.5master、etcd:192.168.10.1...
    99+
    2023-06-19
  • Couchbase怎么实现多节点集群部署
    在Couchbase中,要实现多节点集群部署,需要按照以下步骤操作: 安装Couchbase Server:首先需要在每个节点上...
    99+
    2024-04-02
  • 使用Kubeadm在CentOS7.2上部署Kubernetes集群的方法
    本文参考kubernetes官网文章Installing Kubernetes on linux with kubeadm在CentOS7.2使用Kubeadm部署Kuebernetes集群,解决了一些在按照该文档部署时...
    99+
    2022-06-04
    CentOS部署Kubernetes集群 CentOS Kubernetes集群
  • nacos 2.1.0集群多节点部署最新详细教程
    目录基本信息源码编译环境编译准备命令编译打包解压部署的jar包应用配置文件application.properties配置调整修改服务端口启动文件startup.sh编码问题日志启动...
    99+
    2024-04-02
  • PHP开发中如何处理多节点和集群部署
    随着互联网技术的不断发展,许多网站和应用都需要处理大量并发请求以满足用户的需求。为了提高网站的性能和可用性,很多开发者选择将网站部署到多个节点上,以实现集群部署。在PHP开发中,如何处理多节点和集群部署成为一个重要的技术难题。本文将介绍如何...
    99+
    2023-10-21
    PHP开发 集群部署 多节点处理
  • ol7.7安装部署4节点spark3.0.0分布式集群
    为学习spark,虚拟机中开4台虚拟机安装spark3.0.0底层hadoop集群已经安装好,见ol7.7安装部署4节点hadoop 3.2.1分布式集群学习环境首先,去http://spark.apache.org/downlo...
    99+
    2015-12-31
    ol7.7安装部署4节点spark3.0.0分布式集群
  • 怎么使用Istio进行多集群部署管理
    这篇文章主要讲解了“怎么使用Istio进行多集群部署管理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Istio进行多集群部署管理”吧!在多控制平面拓扑的配置中,每个 Ku...
    99+
    2023-06-03
  • Centos中怎么使用kubeadm部署kubernetes1.18
    这篇“Centos中怎么使用kubeadm部署kubernetes1.18”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Ce...
    99+
    2023-06-28
  • rocketmq集群部署(多master多slave异步)
    一、最近公司在做队列的技术选型,经过调研,决定使用rocketmq作为整个架构的队列层,我们之前的公司是用RabbitMQ,集群部署参考我之前的文章:RabbitMQ集群部署;rocketmq集群由Name...
    99+
    2024-04-02
  • weblogic集群部署有哪些优点
    WebLogic集群部署有以下优点:1. 高可用性:WebLogic集群部署能够提供高可用性,即使其中一个节点发生故障,其他节点仍然...
    99+
    2023-09-01
    weblogic
  • Kafka如何支持多集群部署
    Kafka支持多集群部署是通过以下几种方式实现的: 多集群架构:Kafka可以部署多个独立的Kafka集群,每个集群可以有不同的...
    99+
    2024-04-02
  • 使用kubeadm命令行工具创建kubernetes集群
    目录命令行工具通过软件仓库安装二进制文件下载安装ubutu & centos 快速安装创建 kubernetes 集群1,创建 Master2,然后初始化集群网络。3,加入集...
    99+
    2024-04-02
  • Redis在PHP应用中的多节点部署
    近年来,随着业务的不断扩大和发展,单机Redis已经无法满足我们的需求。为了保证高可用性和扩展性,我们需要将Redis从单机部署转化为多节点部署。本文将着重讲解如何在PHP应用中实现多节点Redis部署。Redis是一款高性能的内存数据库,...
    99+
    2023-05-15
    PHP redis 多节点部署
  • kubernetes中如何使用 kubeadm 创建高可用集群
    本篇文章为大家展示了kubernetes中如何使用 kubeadm 创建高可用集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一. 环境和版本信息OS:  CentO...
    99+
    2023-06-19
  • 怎么使用kubeadm安装kubernetes 1.13高可用集群
    小编给大家分享一下怎么使用kubeadm安装kubernetes 1.13高可用集群,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!kubeadm安装kubernetes 1.13高可用集群初始化集群:配置hosts文件vi...
    99+
    2023-06-04
  • ol7.7安装部署4节点hadoop 3.2.1分布式集群学习环境
    准备4台虚拟机,安装好ol7.7,分配固定ip192.168.168.11 12 13 14,其中192.168.168.11作为master,其他3个作为slave,主节点也同时作为namenode的同时也是datanode,1...
    99+
    2015-07-05
    ol7.7安装部署4节点hadoop 3.2.1分布式集群学习环境
  • Kubernetes中如何使用Rancher部署K8S集群
    本篇文章给大家分享的是有关Kubernetes中如何使用Rancher部署K8S集群,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.安装Rancher这里使用三台机器来搭建K...
    99+
    2023-06-19
  • 怎样使用kubeadmin进行部署K8s集群
    这篇文章给大家介绍怎样使用kubeadmin进行部署K8s集群,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先,我们来看一下整体的架构。 K8s的部署方式:yum方式部署二进制包:手动使用tar包来部署mi...
    99+
    2023-06-04
  • Hadoop多节点集群怎么安装配置
    本篇内容主要讲解“Hadoop多节点集群怎么安装配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hadoop多节点集群怎么安装配置”吧!1、集群部署介绍 1.1 Hadoop简介 H...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作