【云原生】如何快速部署Kubernetes
文章目录
- What is Kubernetes?
- Kubernetes架构示意简图
- Kubernetes环境搭建方式
- Kubeadm部署Kubernetes
-
- Kubernetes部署环境要求
- Kubernetes部署环境准备
- Kubernetes安装具体步骤
- 部署网络插件
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 环境(集群)主要有多种方式:
1、kubeadm
Kubeadm是一个K8s部署工具,提供kubeadm init 和 kubeadm join两个操作命令,可以快速部署一个Kubernetes集群;
2、minikube
minikube
可以在本地运行Kubernetes的工具,minikube可以在个人计算机(包括Windows,macOS和Linux PC)上运行一个单节点Kubernetes集群,以便您可以试用Kubernetes或进行日常开发工作;
3、二进制包方式
从Github下载发行版的二进制包,手动部署安装每个组件,组成Kubernetes集群,步骤比较繁琐,但是能让你对各个组件有更清晰的认识;
4、yum安装方式
通过yum安装Kubernetes的每个组件,组成Kubernetes集群,不过yum源里面的k8s版本已经比较老了;
5、第三方工具:利用一些大神封装的工具进行k8s环境的安装;
6、还有一种就是一些云服务公司的公用云平台k8s。
Kubeadm部署Kubernetes
本文将介绍以上的第一种方式进行示意部署讲解:
kubeadm是官方社区推出的一个用于快速部署 kubernetes 集群的工具,这个工具能通过两条指令完成一个kubernetes集群的部署;
1、创建一个Master节点:
kubeadm init
2、将Node节点加入到Master集群中:
$ kubeadm join <Master节点的IP和端口>
Kubernetes部署环境要求
1、一台或多台机器,操作系统CentOS 7.x-86_x64
2、硬件配置:内存2GB以上,CPU 2核或CPU 2核以上;
3、集群内各个机器之间能相互通信(必须);
4、集群内各个机器可以访问外网,需要拉取镜像(非必须,也可手动下载需要的文件包);
5、禁止swap分区;
Kubernetes部署环境准备
关闭防火墙
systemctl stop firewalld systemctl disable firewalld
关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config #永久 setenforce 0 #临时
关闭swap(k8s禁止虚拟内存以提高性能)
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久 swapoff -a #临时
在master添加hosts (ip地址根据自己预先设置的为准)
cat >> /etc/hosts << EOF 192.168.52.100 k8smaster 192.168.52.101 k8snode EOF
设置网桥参数
cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system #生效
时间同步
yum install ntpdate -y ntpdate time.windows.com
Kubernetes安装具体步骤
所有服务器节点安装Docker、kubeadm、kubelet、kubectl,Kubernetes
默认容器运行环境是Docker,因此首先需要安装Docker;
1、安装 Docker
更新docker的yum源
yum install wget -y wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
安装指定版本的docker(自行替换最新版本号x.x.x.x):
yum install docker-ce-x.x.x.x -y
配置加速器加速下载
/etc/docker/daemon.json { "registry-mirrors": ["https://cr.console.aliyun.com/"] }
然后执行,不然会提示警告:
systemctl enable docker.service
2、接下搭建:kubeadm、kubelet、kubectl , 添加k8s的阿里云YUM源
cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] name=Kubernetes baseurl=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
yum install kubelet-1.24.1 kubeadm-1.24.1 kubectl-1.24.1 -y
然后执行, 不然会提示警告:
systemctl enable kubelet.service
查看有没有安装:
yum list installed | grep kubelet yum list installed | grep kubeadm yum list installed | grep kubectl
查看安装的版本:
kubelet –version
Kubelet
:运行在cluster所有节点上,负责启动POD和容器;
Kubeadm
:用于初始化cluster的一个工具;
Kubectl
:kubectl是kubenetes命令行工具,通过kubectl可以部署和管理应用,查看各种资源,创建,删除和更新组件;
此时应重启一下系统reboot(centos);
4、部署Kubernetes Master主节点(此命令在master机器上执行)
kubeadm init --apiserver-advertise-address=192.168.52.100 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.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 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config kubectl get nodes
接下来把node
节点加入Kubernetes master中,在Node机器上执行;
向集群添加新节点,执行的命令是kubeadm init最后输出的kubeadm join
命令(如下图):
kubeadm join 192.168.52.101:端口号 --token wa5bif.zfuvbesevdfvf4of \ --discovery-token-ca-cert-hash sha256:87cf5828d54dd80da13c4b57c57360370ea0267a7cc3991989ca3006cf3e44d8
部署网络插件
下载kube-flannel.yml
文件 (flannel作为k8s的集群中常用的网络组件,其yml文件的获取,建议去github中获取)
wget https://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容器)
kubectl get pods -n kube-system
以上就是用Kubeadm
简单部署Kubernetes
的过程,其中涉及到提前准备机器、环境、安装包等动作,过程中需要大家细心操作,部分组件、包等不能通过wget顺利下载时,建议手工下载。 最后,迎大家参考、亲测~
🍒如果您觉得博主的文章还不错或者有帮助的话,请关注一下博主,如果三连收藏支持就更好啦!谢谢各位大佬给予的鼓励!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
代码学习无止境,程序员如何规划自己的职业生涯发展?
圆桌议题 议题一:开源自 2020 年开始列入国家规划后,开源项目越来越多。开源项目的涌现,为大家提供了学习和深度了解升级项目的途径。从学习的角度来看,一个开发者如何参与项目、学习项目? 议题二:CloudWeGo 开源项目主要方向是云原生微服务框架, 这类项目主要的使用场景是什么样的?学习这类项目的价值点在哪里?混迹社区有什么经验分享? 议题三:程序员作为项目使用者的角色,开发者作为开源项目设计者的角色, 这两种角色关注的点有什么不同?作为一个经历过这类角色转换的社区 Committer 来说,有什么经验可以分享? 议题四:在社区视角和全局角度下, 谈一谈为什么大厂都在招聘 Go 工程师?程序员应该如何规划自己的职业发展?程序员最终的归宿是哪里? 议题五:大佬分享环节,大佬们关注的博主/学技术的网站/书籍推荐。 嘉宾 议题一 开源自 2020 年开始列入国家规划后,开源项目越来越多。开源项目的涌现,为大家提供了学习和深度了解升级项目的途径。 从学习的角度来看,一个开发者如何参与项目、学习项目? 分享人:王伟超 关于这个问题的介绍主要从以下四个方面展开: 如何与 Kitex、Cloud...
- 下一篇
项目任务协作管理系统 —— 勾股 DEV3.012 发布
勾股DEV是一款专为IT研发团队打造的项目管理与团队协作的系统工具,可以在线管理团队的工作、项目和任务,覆盖从需求提出到研发完成上线整个过程的项目协作。 勾股DEV通过“项目(Project)”的形式把成员、需求、任务、缺陷(BUG)、文档、互动讨论以及各种形式的资源组织在一起,团队成员参与更新任务、文档等内容来推动项目的进度,同时系统利用时间线索和各种动态的报表的形式来自动给成员汇报项目进度。 🔴更新日志 工时统计bug修复 新增任务时读取任务类型 全面兼容PHP8 更新前端框架layui到最新的2.7.6版本 前端模块引入勾股ADMIN前端解决方案,全新UI优化,提高了体验效果。 项目新增项目阶段功能 整体优化数据表格样式 其他已知问题的修改。 🔴系统特点 多产品支持,可添加多产品管理 多项目支持,可以多项目同时进行管理,支持项目分阶段拆解项目 可配置的用户角色控制,不同的角色可配置不同的操作权限 Wiki 形式的文档撰写,Mardown编辑器,工程师使用更高效便捷 每个项目配置有需求、任务、Wiki文档、动态记录、互动评论、工作记录模块 任务时间跟踪机制,项目任务多状态流转,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7设置SWAP分区,小内存服务器的救世主
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Hadoop3单机部署,实现最简伪集群