【kubernetes篇】教你kubeadm方式搭建kubernetes 集群。单master节点集群,多master节点集群说明。

这篇具有很好参考价值的文章主要介绍了【kubernetes篇】教你kubeadm方式搭建kubernetes 集群。单master节点集群,多master节点集群说明。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

kubernetes集群搭建

1. 集群分类

kubernetes集群分为单Master节点集群和多Master节点集群。在实际应用中我们一般采用多Master节点集群,实现高可用。

  • 单Master节点集群模型:

【kubernetes篇】教你kubeadm方式搭建kubernetes 集群。单master节点集群,多master节点集群说明。

  • 多Master节点集群模型

【kubernetes篇】教你kubeadm方式搭建kubernetes 集群。单master节点集群,多master节点集群说明。

2. 集群搭建硬件要求

  • Master节点:2核,4G内存,20G磁盘

  • Node节点:4核,8G内存,40G磁盘

Master只是作为控制节点,占用资源不高,但是Node节点进行实际的业务处理等,占用资源较高。

3. 集群搭建方式

kubernetes集群一般有两种搭建方式:

  1. Kubeadm

Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。

官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/

  1. 二进制包

从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。

两种方式比较:Kubeadm降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署Kubernetes集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。

4. kubeadm部署方式

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

第一、创建一个Master节点

kubeadm init

第二、将Node节点加入到当前集群中

kubeadm join <Master节点的IP和端口>

4.1 安装要求

  • 一台或多台机器,操作系統CentOS7.x-86_ x64
  • 硬件配置: 2GB或更多RAM,2核CPU或更多CPU,硬盘30GB或更多
  • 可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载境像并导入节点
  • 禁止swap分区

我这里使用虚拟机来模拟三台服务器,分别作为master节点和node节点

【kubernetes篇】教你kubeadm方式搭建kubernetes 集群。单master节点集群,多master节点集群说明。

节点属性 ip
master 192.168.237.136
node1 192.168.237.137
node2 192.168.237.139

4.2 初始化工作

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

关闭selinux

sed -i 's/fenforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0 # 临时

关闭swap

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

根据规划设置主机名

hostnamectl set-hostname <hostname>

在master节点添加hosts(只在master节点执行)

cat >> /etc/hosts << EOF 
192.168.237.136 master1  # ip 主机名称
192.168.237.137 worker1
192.168.237.139 worker2
EOF

将桥接的IPv4流量传递到iptables的链

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 -u ntp.api.bz

4.3 安装Docker/kubeadm/kubelet

Kubernetes默认CRI (容器运行时) 为Docker,因此先安装Docker

4.3.1 安装Docker

参考之前的文章即可

https://blog.csdn.net/weixin_45842494/article/details/123013040

4.3.2 添加阿里云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

4.3.3 安装kubeadm , kubelet和kubectl

yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0  # 指定版本,根据需要选择
systemctl enable kubelet  # 设置开机启动

4.4 部署Kubernetes Master

主节点(Master)执行

kubeadm init \
--apiserver-advertise-address=192.168.237.136 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16  # 这些网段没严格要求,和当前网段不冲突就行

【kubernetes篇】教你kubeadm方式搭建kubernetes 集群。单master节点集群,多master节点集群说明。

看到提示信息中有Your Kubernetes control-plane has initialized successfully!表示成功了,同时使用docker images可以看到拉取的镜像。

使用kubectl工具(在提示信息中有,复制即可)

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

【kubernetes篇】教你kubeadm方式搭建kubernetes 集群。单master节点集群,多master节点集群说明。

4.5 加入Kubernetes Node

工作节点(Node)中执行

向集群添加新节点,执行在kubeadm init输出的kubeadm join命令

# 这些内容根据提示写
kubeadm join 192.168.237.136:6443 --token 82lknt.d9fg3q0dnl17zc6d \
    --discovery-token-ca-cert-hash sha256:1c95dcbc9104363f14061d6f5bb3a38dc21c5cec12a884017f5790b388ee6ba3 

【kubernetes篇】教你kubeadm方式搭建kubernetes 集群。单master节点集群,多master节点集群说明。

默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,操作如下:

kubeadm token create --print-join-command

从图中看出目前是NotReady的状态,需要加入CNI网络插件

4.6 部署CNI网络插件

kubectl apply -f https://docs.projectcalico.org/v3.10/manifests/calico.yaml
[root@master1 ~]# kubectl get nodes
NAME      STATUS   ROLES    AGE   VERSION
master1   Ready    master   43m   v1.18.0
worker1   Ready    <none>   30m   v1.18.0
worker2   Ready    <none>   29m   v1.18.0
[root@master1 ~]# kubectl get pods -n kube-system
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-57546b46d6-zls4k   1/1     Running   0          2m45s
calico-node-9n9hj                          1/1     Running   0          2m45s
calico-node-brrsq                          1/1     Running   0          2m45s
calico-node-l79q8                          1/1     Running   0          2m45s
coredns-7ff77c879f-64z5h                   1/1     Running   0          44m
coredns-7ff77c879f-mprbq                   1/1     Running   0          44m
etcd-master1                               1/1     Running   0          45m
kube-apiserver-master1                     1/1     Running   0          45m
kube-controller-manager-master1            1/1     Running   0          45m
kube-proxy-52ldf                           1/1     Running   0          31m
kube-proxy-sb2sc                           1/1     Running   0          44m
kube-proxy-xvqvh                           1/1     Running   0          31m
kube-scheduler-master1                     1/1     Running   0          45m
[root@master1 ~]# 

【kubernetes篇】教你kubeadm方式搭建kubernetes 集群。单master节点集群,多master节点集群说明。

状态为Running

4.7 测试kubernetes集群

在Kubernetes集群中创建一个pod,验证是否正常运行:

kubectl create deployment nginx --image=nginx

kubectl expose deployment nginx --port=80 --type=NodePort

kubectl get pod,svc
[root@master1 ~]# kubectl create deployment nginx --image=nginx
deployment.apps/nginx created
[root@master1 ~]# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
[root@master1 ~]# kubectl get pod
NAME                    READY   STATUS    RESTARTS   AGE
nginx-f89759699-nntwg   1/1     Running   0          78s
[root@master1 ~]# kubectl get pod,svc
NAME                        READY   STATUS    RESTARTS   AGE
pod/nginx-f89759699-nntwg   1/1     Running   0          2m49s

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        54m
service/nginx        NodePort    10.106.109.109   <none>        80:30179/TCP   2m3s
[root@master1 ~]# 

【kubernetes篇】教你kubeadm方式搭建kubernetes 集群。单master节点集群,多master节点集群说明。

注意这里端口号是30179

外网访问:NodeIp:Port

【kubernetes篇】教你kubeadm方式搭建kubernetes 集群。单master节点集群,多master节点集群说明。

当然使用主节点ip也是可以的。

单master节点集群搭建完成。后面我们会讲解多master 节点集群搭建。关注我哦。

微信公众号先已开通,搜索 “江小南和他的小伙伴们” 就能找到我哦,各位小伙伴们可以关注一下,文章会进行同步更新,方便查看哦。文章来源地址https://www.toymoban.com/news/detail-406998.html

到了这里,关于【kubernetes篇】教你kubeadm方式搭建kubernetes 集群。单master节点集群,多master节点集群说明。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Kubernetes[K8S]集群:master主节点初始化]:通过Calico和Coredns网络插件方式安装

    主节点:安装coredns - init初始化 主节点(此时还没有安装calico) 从节点:基于主节点生成join命令加入集群 主节点:安装calico:apply 生成pod,此时没有调整yaml网卡 coredns 和calico pod 运行成功 但是 calico-node-cl8f2 运行失败 查看 解决链接 因为之前写过一篇,calico一直异常,步骤

    2024年04月15日
    浏览(53)
  • Kubeadm安装单master多node节点K8S集群

    记录在刚搭建的3个虚拟机里成功安装K8S1.25版本集群的步骤 由于是成功创建后才记录的博客,只记录了操作步骤,过程中执行命令后的截图会有部分缺失,或者换成了文字。 操作系统:centos7.9 每个服务器配置: 4Gib内存/4vCPU/80G硬盘 网络:NAT模式 K8S集群角色 IP 主机名 安装的

    2024年01月24日
    浏览(60)
  • kubeadm 安装k8s集群后,master节点notready问题解决方案

    使用kubeadm 安装k8s集群后,加载calico cni 网络组件后,master节点notready问题 表现为: 使用命令查看日志:journalctl -f -u kubelet 报错如下: Failed to start ContainerManager failed to initialize top level QOS containers: failed to update top level Burstable QOS cgroup : failed to set supported cgroup subsystems for cgroup

    2024年01月22日
    浏览(47)
  • k8s集群加入一个master2--kubeadm方式

    已经有一个集群: 192.168.206.138 master 192.168.206.136 k8s-node1 192.168.206.137 k8s-node2 kubectl get nodes -o wide 新加入一个master2节点 192.168.206.139 master2   如果不加这句,加入集群时一定会报错: [preflight] Running pre-flight checks         [WARNING SystemVerification]: missing optional cgroups: pids [preflight]

    2024年01月22日
    浏览(47)
  • 【二】kubernetes master单节点拓展为集群

    #服务器 #部署 #云原生 #k8s 栏目全部章节 一、ubuntu20.04上搭建containerd版( 1.2.4 以上)k8s及kuboard V3 二、kubernetes master单节点拓展为集群 三、kubernetes kuboard部署分布式系统 接上文中,我们已经部署好了单节点master的k8s集群,在生产环境中,单节点的master肯定是不行的,那么我们

    2024年02月10日
    浏览(62)
  • Kubernetes - CentOS7搭建k8s_v1.18集群高可用(kubeadm/二进制包部署方式)实测配置验证手册

    一、Kubernetes—k8s是什么 Kubernetes 这个名字源于希腊语,意为“舵手“或”飞行员\\\"。 Kubernetes,简称K8s,中间有8个字符用8代替缩写。 Google于2014年开源项目,为容器化应用提供集群和管理的开源工具,Kubernetes目标是让部署容器化的应用简单并且高效,提供了应用部署,规划,更

    2024年04月27日
    浏览(52)
  • 【云原生】Kubernetes二进制--多节点Master集群高可用

    作用 :实现高可用 apiserver 对外安全通信端口 6443 ,对内端口 8080 1、实现高可用方法 etcd:etcd群集至少是3副本,奇数台,通过raft算法,保证数据的一致性 node节点:承载业务,跟Master进行对接 master节点:高可用使用keepalived+LB方案,keepalived能够提供VIP和主备,LB实现负载均衡

    2024年02月04日
    浏览(45)
  • Kubernetes实战(十四)-k8s高可用集群扩容master节点

    k8s 集群是由一组运行 k8s 的节点组成的,节点可以是物理机、虚拟机或者云服务器。k8s 集群中的节点分为两种角色:master 和 node。 master 节点:master 节点负责控制和管理整个集群,它运行着一些关键的组件,如 kube-apiserver、kube-scheduler、kube-controller-manager 等。master 节点可以有

    2024年02月03日
    浏览(52)
  • kubeadm搭建单master多node的k8s集群--小白文,图文教程

    K8S基础知识与集群搭建 kubeadm搭建单master多node的k8s集群—主要参考这个博客,但是有坑,故贴出我自己的过程,坑会少很多 注意: 集群配置是:一台master:zabbixagent-k8smaster,两台node:k8snode1和k8snode2 当没有明说master机器做什么或者node机器做什么时,所有操作步骤默认是三台

    2024年02月19日
    浏览(53)
  • 云原生 黑马Kubernetes教程(K8S教程)笔记——第一章 kubernetes介绍——Master集群控制节点、Node工作负载节点、Pod控制单元

    参考文章:kubernetes介绍 本章节主要介绍应用程序在服务器上部署方式演变以及kubernetes的概念、组件和工作原理。 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为

    2024年02月04日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包