如何快速部署 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

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

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