Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用Kubeadm创建k8s集群之部署规划(三十一)

使用Kubeadm创建k8s集群之部署规划(三十一)

作者头像
心莱科技雪雁
发布于 2019-07-27 12:37:16
发布于 2019-07-27 12:37:16
75100
代码可运行
举报
文章被收录于专栏:雪雁的专栏雪雁的专栏
运行总次数:0
代码可运行

前言

上一篇我们讲述了使用Kubectl管理k8s集群,那么接下来,我们将使用kubeadm来启动k8s集群。

部署k8s集群存在一定的挑战,尤其是部署高可用的k8s集群更是颇为复杂(后续会讲)。因此本教程会在部署的过程中穿插讲解一些部署相关知识、原理和步骤,比如kubeadm、kubelet以及启动集群时的实际部署动作等等。整个部署过程全部脚本化,以便各位参考和学习。

因整个集群部署教程篇幅较长,因此会拆分成几篇进行说明。

目录

使用Kubeadm创建k8s集群

  • Kubeadm概述
  • Kubelet概述
  • 定义集群部署目标和规划
  • 部署规划

使用Kubeadm创建k8s集群

Kubeadm概述

Kubeadm 是一个命令行工具,它主要提供了“kubeadm init” 以及 “kubeadm join”这两个命令来快速创建和初始化kubernetes 集群。

Kubeadm通过执行必要的操作来启动和运行一个最小可用的集群。它被故意设计为只关心启动集群,而不是之前的节点准备工作。同样的,诸如安装各种各样的插件,例如 Kubernetes Dashboard、监控解决方案以及特定云提供商的插件,这些都不在它负责的范围。

主要命令

其主要命令和说明如下表所示:

命令

说明

kubeadm init

启动一个Kubernetes主节点

kubeadm join

启动一个Kubernetes工作节点并且将其加入到集群

kubeadm upgrade

更新一个 Kubernetes 集群到新版本

kubeadm config

查看存储在集群中的kubeadm配置,例如“kubeadm config images list”可以列出kubeadm需要的镜像

kubeadm token

令牌管理

kubeadm reset

重置集群,也就是将还原kubeadm init 或者 kubeadm join 对主机所做的任何更改

kubeadm version

打印 kubeadm 版本

Kubelet概述

kubelet 是在每个节点上运行的主要“节点代理”。简单地说,kubelet 的主要功能就是定时获取节点上pod/container 的期望状态(运行什么容器、运行的副本数量、网络或者存储如何配置等等),并调用对应的容器平台接口达到这个状态,并确保它们能够健康的运行。因此,kubelet的主要功能为:

  • pod管理
  • 容器健康检查
  • 容器监控

注意,不是 Kubernetes创建的容器将不在 kubelet 的管理范围。

了解了这些,接下来,我们来使用Kubeadm来创建集群。

定义集群部署目标和规划

有目标,我们才能有的放矢。在本节内容中,我们将基于三台虚拟机来搭建一个k8s集群,其中一台作为主节点,另外两台作为工作节点。

具体部署架构如下所示:

1.安装规划

服务器规划:

主机名称

操作系统

IP

系统配置

备注

k8s-master

CentOS-7-x86_64

172.16.2.201

2核2G

作为主节点

k8s-node1

CentOS-7-x86_64

172.16.2.202

2核2G

作为工作节点

k8s-node2

CentOS-7-x86_64

172.16.2.203

2核2G

作为工作节点

值得注意的是:

  • 服务器最小内存不得小于2G,CPU核心数最少为2;
  • 群集中所有的计算机之间拥有完全的网络连接(公共或专用网络);
  • 所有机器都有sudo权限;

相关环境的搭建和初始化笔者这里先行略过。

以下内容均使用root账户安装和配置。

Pod 分配 IP 段:10.244.0.0/16

kubernetes-version:v1.15.0

apiserver-advertise-address:172.16.2.201

部署规划

接下来,我们就开始按规划进行部署。主体步骤如下所示:

1.主机和IP设置

各节点主机名称和IP设置如表所示:

主机名称

IP

k8s-master

172.16.2.201

k8s-node1

172.16.2.202

k8s-node2

172.16.2.203

接下来我们以master(k8s-master)为例,相关设置步骤如下所示(请注意替换相关参数):

  • 设置主机名称以及修改主机记录
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bash:#设置Host名称hostnamectl set-hostname k8s-master  
#查看host名称hostname

#修改Host文件,给127.0.0.1添加hostnameecho "127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 k8s-master::1         localhost localhost.localdomain localhost6 localhost6.localdomain6"> /etc/hosts

#查看修改结果cat /etc/hosts
  • 配置网络服务以及设置固定IP
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bash:#配置网卡echo "DEVICE=eth0TYPE=EthernetIPADDR=172.16.2.201PREFIX=24NETMASK=255.255.255.0NETWORK=172.16.2.0GATEWAY=172.16.2.254BROADCAST=172.16.2.255DEFROUTE=yesONBOOT=yesUSERCTL=yesBOOTPROTO=staticNAME=eth0IPV4_FAILURE_FATAL=yesUUID=5ed1bf4a-4be2-4040-ad55-fea853b849d1"> /etc/sysconfig/network-scripts/ifcfg-eth0

#编辑/etc/sysconfig/networkecho "NETWORKING=yesHOSTNAME=k8s-master"> /etc/sysconfig/network

#编辑/etc/resolv.conf,设置DNSecho "nameserver 172.16.2.254nameserver 114.114.114.114nameserver 8.8.8.8"> /etc/resolv.conf

#重启网络服务systemctl restart network.service #重启网络服务systemctl status network.service #查看网络服务状态
  • 系统设置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bash:#关闭Selinuxsed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

#永久关闭Swapswapoff -ased -ri 's/.*swap.*/#&/' /etc/fstabecho "vm.swappiness = 0">> /etc/sysctl.conf  

#修改内核参数cat <<EOF > /etc/sysctl.d/k8s.confnet.ipv4.ip_forward = 1net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1vm.swappiness=0EOF

2.Docker安装

这里推荐使用以下脚本来安装官方已经充分测试过的指定版本的Docker-ce以及设置加速器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 安装必须的包yum install yum-utils device-mapper-persistent-data lvm2# 添加Docker仓库yum-config-manager \  --add-repo \  https://download.docker.com/linux/centos/docker-ce.repo# 安装指定版本的Docker CEyum update && yum install docker-ce-18.06.2.ce# 创建 /etc/docker 目录mkdir /etc/docker# 设置守护程序cat > /etc/docker/daemon.json <<EOF{  "exec-opts": ["native.cgroupdriver=systemd"],  "log-driver": "json-file",  "log-opts": {    "max-size": "100m"  },  "storage-driver": "overlay2",  "storage-opts": [    "overlay2.override_kernel_check=true"  ] ,  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]}EOFmkdir -p /etc/systemd/system/docker.service.d# 重启Docker服务systemctl daemon-reloadsystemctl enable dockersystemctl restart docker

3.主机端口设置

  • 主节点端口设置:

协议

方向

端口

说明

TCP

入站

6443*

Kubernetes API server

TCP

入站

2379-2380

etcd server client API

TCP

入站

10250

Kubelet API

TCP

入站

10251

kube-scheduler

TCP

入站

10252

kube-controller-manager

  • 工作节点端口设置:

协议

方向

端口

说明

TCP

入站

10250

Kubelet API

TCP

入站

30000-32767

NodePort Services

CentOS默认没有安装防火墙,需要使用以下命令安装和启用防火墙:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#安装iptables服务yum install  iptables-servicessystemctl  enable iptables.servicesystemctl  start  iptables.service

然后使用编辑器按Demo编辑文件/etc/sysconfig/iptables设置准入端口即可。

在开发实验阶段,为了方便,大家也可以直接禁用防火墙:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl stop firewalld.servicesystemctl disable firewalld.service

如果喜欢作者的文章,请关注“magiccodes”订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 麦扣聊技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用Kubeadm创建k8s集群之部署规划(三十)
上一篇我们讲述了使用Kubectl管理k8s集群,那么接下来,我们将使用kubeadm来启动k8s集群。
雪雁-心莱科技
2019/07/25
7080
使用Kubeadm创建k8s集群之部署规划(三十)
kubeadm方式部署k8s集群
kubectl:通过 kubectl 可以部署和管理应用,查看各种资源,创建、删除和更新各种组件
Xiongan-桃子
2023/06/10
5000
kubeadm方式部署k8s集群
k8s 实践经验(二):搭建 k8s 集群
Kubernetes集群大致分为两类:一主多从和多主多从。 一主多从:一个Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境。 多主多从:多台Master和多台Node节点,搭建麻烦,安全性高,适合用于生产环境。
看、未来
2022/05/06
1.3K0
k8s 实践经验(二):搭建 k8s 集群
部署k8s集群(k8s集群搭建详细实践版)
Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。
zjiekou
2022/11/12
22.6K5
【Kubernetes】10分钟部署一套K8S集群(kubeadm)
TIPS:需要在所有集群机器上执行的命令,可以用XSHELL的发送命令到所有会话,提高部署效率
Hanzo
2020/08/05
16.4K4
【Kubernetes】10分钟部署一套K8S集群(kubeadm)
kubeadm安装高可用k8s集群
● 本次搭建的环境需要五台CentOS服务器(三主二从),然后在每台服务器中分别安装Docker、kubeadm和kubectl以及kubelet。
大忽悠爱学习
2022/09/28
1.3K0
kubeadm安装高可用k8s集群
使用kubeadm快速部署一套K8S集群
Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,仅用于尝试Kubernetes或日常开发的用户使用。部署地址:https://kubernetes.io/docs/setup/minikube/
没有故事的陈师傅
2019/09/19
7.2K21
使用kubeadm快速部署一套K8S集群
企业实战(19)基于Kubeadm工具从零开始快速部署K8S集群
1.Cluster 集群   计算、存储和网络资源的集合,Kubernetes利用这些资源运行各种基于容器的应用。
非著名运维
2022/06/22
6080
企业实战(19)基于Kubeadm工具从零开始快速部署K8S集群
K8S折磨的安装篇
这些容器管理的问题统称为容器编排问题,为了解决这些容器编排问题,就产生了一些容器编排的软件:
大忽悠爱学习
2022/08/23
7640
K8S折磨的安装篇
使用Kubeadm创建k8s集群之节点部署(三十一)
本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备。本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜像拉取问题)还提供了多种解决方案。不过基于部署环境和k8s的复杂性,我们需要对k8s集群部署过程中的一些步骤都有所了解,尤其是“kubeadm init”命令。
雪雁-心莱科技
2019/08/05
1.4K0
使用Kubeadm创建k8s集群之节点部署(三十一)
【Kubernetes】10分钟部署一套K8S集群(kubeadm)
TIPS:需要在所有集群机器上执行的命令,可以用XSHELL的发送命令到所有会话,提高部署效率
用户4473763
2022/09/25
6550
CentOS7环境下快速部署Kubernetes(k8s)集群
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署,规划,更新,维护的一种机制
yuanfan2012
2020/03/26
5.3K0
CentOS7环境下快速部署Kubernetes(k8s)集群
《k8s 集群搭建》不要让贫穷扼杀了你学 k8s 的兴趣!
阅读这篇文章先需要对 docker 的基本知识有所了解!相关阅读请移步:Docker上手,看完觉得自己又行了!
蔡不菜丶
2021/04/16
1.7K1
《k8s 集群搭建》不要让贫穷扼杀了你学 k8s 的兴趣!
Centos7安装k8s集群1.15.0版本
apiVersion: v1 kind: ServiceAccount metadata: name: dashboard namespace: kube-system --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: dashboard subjects: - kind: ServiceAccount name: dashboard namespace: kube-system roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
kinnylee
2020/10/15
1.9K0
Centos7安装k8s集群1.15.0版本
利用 kubeadm 创建 kubernetes 的高可用集群
堆叠方案:etcd服务和控制平面被部署在同样的节点中,对基础设施的要求较低,对故障的应对能力也较低
小陈运维
2021/10/13
1.3K0
centos7部署k8s_怎么在自己电脑上搭建网站
学习K8S时,常常需要自己搭建环境,本人将centOS-7上搭建K8S的过程进行做如下的记录,以方便自己后续环境的搭建和指导其他人搭建环境作为参考资料,本章节主要介绍如何搭建kubernetes的集群环境
全栈程序员站长
2022/09/21
2.7K0
centos7部署k8s_怎么在自己电脑上搭建网站
k8s01_使用kubeadm部署k8s集群
http://www.chenleilei.net/soft/kubeadm快速部署一个Kubernetes集群yaml.zip
陈雷雷
2020/03/18
1.1K1
k8s01_使用kubeadm部署k8s集群
k8s部署篇之Kubeadm高可用
公司DDD架构的新项目采用云原生,K8s+Docker这方面的知识就必不可少了 因此,我背着同事偷偷的卷了卷,然后Docker考核成了公司唯一一个优秀,然后。。。后续就不多说了,总之一言难尽
小炜同学
2022/09/23
1K0
ASP.NET Core on K8S深入学习(1)K8S基础知识与集群搭建
在上一个小系列文章《ASP.NET Core on K8S学习初探》中,通过在Windows上通过Docker for Windows搭建了一个单节点的K8S环境,并初步尝试将ASP.NET Core WebAPI项目部署到了K8S,把玩了一下快速部署和实例伸缩。这个系列开始,会继续学习K8S以及在Linux上搭建集群来深入把玩。本篇会回顾一下K8S的基本概念以及架构组成,然后会通过Kubeadm快速地搭建一个K8S集群供后续学习把玩之用。
Edison Zhou
2019/08/01
9490
ASP.NET Core on K8S深入学习(1)K8S基础知识与集群搭建
kubeadm 安装 k8s 集群(版本自选)
互联网早期,企业将服务直接部署在物理机上;后来由于一系列变化,经历了虚拟化部署,开始了 容器部署之路,Docker 无疑是其中的佼佼者。
看、未来
2022/08/11
8501
kubeadm 安装 k8s 集群(版本自选)
相关推荐
使用Kubeadm创建k8s集群之部署规划(三十)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验