如何快速部署 Kubernetes

如何快速部署 Kubernetes

作者:Gauss松鼠会 2022-08-21 16:50:36

云计算

云原生 本文主要介绍用 Kubeadm​ 简单部署 Kubernetes 的过程,其中涉及到提前准备机器、环境、安装包等动作,过程中需要大家细心操作,部分组件、包等不能通过 wget 顺利下载时,建议手工下载。

What is Kubernetes?

Kubernetes 这个单词来自于希腊语,含义是舵手或领航员。Kubernetes,也称为 K8S,其中 8 是代表中间 “ubernete” 的 8 个字符。

官网描述如下图:生产级别的容器编排系统,是用于自动部署,扩展和管理容器化应用程序的开源系统。 (编排:按照一定的目的依次排列;调配、安排)。

K8S 是 CNCF 毕业的项目,本来 Kubernetes 是 Google 的内部项目,后来开源出来,又后来为了其茁壮成长,捐给了 Cloud Native Computing Foundation(CNCF:云原生计算基金会)

我们在 github 上可以看到,Kubernetes 是采用 Go 语言开发的。Go(又称 Golang)是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。

Kubernetes 架构示意简图

Master(系统由控制面)

k8s 集群控制节点,对集群进行调度管理,接受集群外用户去集群操作请求;

Master Node 由 API Server、Scheduler、ClusterState Store(ETCD 数据库)和 Controller MangerServer 所组成;

Nodes (数据面)

集群工作节点,运行用户业务应用容器;

Nodes 节点也叫 Worker Node,包含 kubelet、kube proxy 和 Pod(Container Runtime);

Kubernetes 环境搭建方式

部署 Kubernetes 环境(集群)主要有多种方式:

  • kubeadm:Kubeadm 是一个 K8s 部署工具,提供 kubeadm init 和 kubeadm join 两个操作命令,可以快速部署一个 Kubernetes 集群;
  • minikube:minikube 可以在本地运行 Kubernetes 的工具,minikube 可以在个人计算机(包括 Windows,macOS 和 Linux PC)上运行一个单节点 Kubernetes 集群,以便您可以试用 Kubernetes 或进行日常开发工作;
  • 二进制包方式:从 Github 下载发行版的二进制包,手动部署安装每个组件,组成 Kubernetes 集群,步骤比较繁琐,但是能让你对各个组件有更清晰的认识;
  • yum 安装方式:通过 yum 安装 Kubernetes 的每个组件,组成 Kubernetes 集群,不过 yum 源里面的 k8s 版本已经比较老了;
  • 第三方工具:利用一些大神封装的工具进行 k8s 环境的安装;
  • 还有一种就是一些云服务公司的公用云平台 k8s。

Kubeadm 部署 Kubernetes

本文将介绍以上的第一种方式进行示意部署讲解:

kubeadm 是官方社区推出的一个用于快速部署 kubernetes 集群的工具,这个工具能通过两条指令完成一个 kubernetes 集群的部署;

创建一个 Master 节点:

kubeadminit

将 Node 节点加入到 Master 集群中:

$kubeadmjoin<Master节点的IP和端口>

Kubernetes 部署环境要求

  • 一台或多台机器,操作系统 CentOS 7.x-86_x64
  • 硬件配置:内存 2GB 以上,CPU 2 核或 CPU 2 核以上;
  • 集群内各个机器之间能相互通信(必须);
  • 集群内各个机器可以访问外网,需要拉取镜像(非必须,也可手动下载需要的文件包);
  • 禁止 swap 分区;

Kubernetes 部署环境准备

关闭防火墙:

systemctlstopfirewalld
systemctldisablefirewalld

关闭 selinux:

sed-i's/enforcing/disabled/'/etc/selinux/config#永久
setenforce0#临时

关闭 swap(k8s 禁止虚拟内存以提高性能):

sed-ri's/.*swap.*/#&/'/etc/fstab#永久
swapoff-a#临时

在 master 添加 hosts (ip 地址根据自己预先设置的为准):

cat>>/etc/hosts<<EOF192.168.52.100k8smaster192.168.52.101k8snodeEOF

设置网桥参数:

cat>/etc/sysctl.d/k8s.conf<<EOFnet.bridge.bridge-nf-call-ip6tables=1net.bridge.bridge-nf-call-iptables=1EOF
sysctl--system#生效

时间同步:

yuminstallntpdate-y
ntpdatetime.windows.com

Kubernetes 安装具体步骤

所有服务器节点安装 Docker、kubeadm、kubelet、kubectl,Kubernetes 默认容器运行环境是 Docker,因此首先需要安装 Docker;

(1) 安装 Docker

更新 docker 的 yum 源:

yuminstallwget-y
wgethttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

安装指定版本的 docker(自行替换最新版本号 x.x.x.x):

yuminstalldocker-ce-x.x.x.x-y

配置加速器加速下载:

/etc/docker/daemon.json
{

"registry-mirrors": ["https://cr.console.aliyun.com/"]
}

然后执行,不然会提示警告:

systemctlenabledocker.service

(2) 接下搭建:kubeadm、kubelet、kubectl , 添加 k8s 的阿里云 YUM 源:

cat>/etc/yum.repos.d/kubernetes.repo<<EOF [kubernetes] name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF

(3) 安装 kubeadm,kubelet 和 kubectl

yuminstallkubelet-1.24.1kubeadm-1.24.1kubectl-1.24.1-y

然后执行,不然会提示警告:

systemctlenablekubelet.service

查看有没有安装:

yumlistinstalled|grepkubelet
yumlistinstalled|grepkubeadm
yumlistinstalled|grepkubectl

查看安装的版本:

kubelet–version
  • Kubelet:运行在 cluster 所有节点上,负责启动 POD 和容器;
  • Kubeadm:用于初始化 cluster 的一个工具;
  • Kubectl:kubectl 是 kubenetes 命令行工具,通过 kubectl 可以部署和管理应用,查看各种资源,创建,删除和更新组件;

此时应重启一下系统 reboot(centos);

(4) 部署 Kubernetes Master 主节点(此命令在 master 机器上执行)

kubeadminit--apiserver-advertise-address=192.168.52.100--image-repositoryregistry.aliyuncs.com/google_containers--kubernetes-versionv1.24.1--service-cidr=10.96.0.0/12--pod-network-cidr=10.244.0.0/16

补充:service-cidr 的选取不能和 PodCIDR 及本机网络有重叠或者冲突,一般可以选择一个本机网络和 PodCIDR 都没有用到的私网地址段,比如 PODCIDR 使用 10.244.0.0/16, 那么 service cidr 可以选择 10.96.0.0/12,网络无重叠冲突即可;

接下来在 master 机器上执行:

mkdir-p$HOME/.kube
sudocp-i/etc/kubernetes/admin.conf$HOME/.kube/config
sudochown$(id-u):$(id-g) $HOME/.kube/config

kubectlgetnodes

接下来把 node 节点加入 Kubernetes master 中,在 Node 机器上执行;

向集群添加新节点,执行的命令是 kubeadm init 最后输出的 kubeadm join 命令(如下图):

kubeadmjoin192.168.52.101:端口号--tokenwa5bif.zfuvbesevdfvf4of \
--discovery-token-ca-cert-hashsha256:87cf5828d54dd80da13c4b57c57360370ea0267a7cc3991989ca3006cf3e44d8

部署网络插件

下载 kube-flannel.yml 文件 (flannel 作为 k8s 的集群中常用的网络组件,其 yml 文件的获取,建议去 github 中获取)

wgethttps://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

应用 kube-flannel.yml 文件得到运行时容器;

kubectl apply -f kube-flannel.yml (在 master 机器上执行):

然后查看节点状态: kubectl get nodes (在 master 机器上执行),STATUS:Ready 时,说明我们的 k8s 环境至此就搭建好了。

查看运行时容器 pod (一个 pod 里面运行了多个 docker 容器)

kubectlgetpods-nkube-system

以上就是用 Kubeadm​ 简单部署 Kubernetes 的过程,其中涉及到提前准备机器、环境、安装包等动作,过程中需要大家细心操作,部分组件、包等不能通过 wget 顺利下载时,建议手工下载。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/230144.html<

(0)
管理的头像管理
上一篇2025-04-19 02:32
下一篇 2025-04-19 02:33

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注