史上最详细k8s安装流程

1、硬件要求

服务器CPU内存硬盘
至少2台至少2核至少4G至少20G

2、部署

2.1、服务器规划

主机名系统IP地址备注
mastercentos7.9192.168.277.10主机名不能包含数字 大写字符、下划线以及特殊符号
workercentos7.9192.168.277.11IP地址必须固定,且只有一张网卡,如需增加网卡,待k8s安装完成后再增加网卡

注意

  • 在部署k8s的服务器上不可以部署docker以及docker相关的组件。可以使用以下命令检查是否安装过docker

    docker -version
    
  • 多台服务器之间可以相互Ping通,确保网络通畅。可以使用以下命令来检查服务器之间是否可以互通,建议等测试完成后再设置禁ping操作.

    ping 192.168.277.11
    
  • 在部署k8s之前最好关闭防火墙。可以使用以下命令检查服务器防火墙是否开启

    systemctl status firewalld
    

2.2、服务器环境修改

2.2.1、修改主机名

k8s在部署时节点的名字不能使用localhost,需要修改名字

# 查看目前的名字,需要分别在所有节点中执行
hostname

# 分别修改各个服务器的名字
  # 主节点中
hostnamectl set-hostname k8smaster
  # node节点中
hostnamectl set-hostname k8sworker
# 查看修改后的名字
hostnamectl status
# 设置 hostname 解析,分别在各个节点中执行
echo "127.0.0.1   $(hostname)" >> /etc/hosts
# 查看是否写入hosts文件中
cat /etc/hosts

在这里插入图片描述

执行完hostname解析后查看是否写入hosts文件中

hosts解析

2.2.2、查看系统版本
# 在每个节点上都需要执行
  cat /etc/redhat-release 

在这里插入图片描述

确保系统版本一致,不会因为版本的差异而造成安装不成功

2.2.3 查看CPU的核数

需要分别在各个服务器中执行

lscpu

在这里插入图片描述

确保CPU至少为2核

2.2.4、查看内存大小

分别在各个服务器中执行

free -h

在这里插入图片描述

内存大小至少要求4G

2.2.5、关闭防火墙

建议在安装k8s时将防火墙关闭

# 查看防火墙状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld
# 设置禁止开机自启
ssystemctl disable firewalld

在这里插入图片描述

2.3、安装

2.3.1、拉去镜像
# 在 master 节点和 worker 节点都要执行
# 最后一个参数 1.19.5 用于指定 kubenetes 版本,支持所有 1.19.x 版本的安装
# 腾讯云 docker hub 镜像
# export REGISTRY_MIRROR="https://mirror.ccs.tencentyun.com"
# DaoCloud 镜像
# export REGISTRY_MIRROR="http://f1361db2.m.daocloud.io"
# 华为云镜像
# export REGISTRY_MIRROR="https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com"
# 阿里云 docker hub 镜像
export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com
curl -sSL https://kuboard.cn/install-script/v1.19.x/install_kubelet.sh | sh -s 1.19.5

在这里插入图片描述

安装完毕
在这里插入图片描述

2.3.2 、初始化master节点
# 只在 master 节点执行
# 替换 x.x.x.x 为 master 节点实际 IP(请使用内网 IP)
# export 命令只在当前 shell 会话中有效,开启新的 shell 窗口后,如果要继续安装过程,请重新执行此处的 export 命令
export MASTER_IP=192.168.227.10
# 替换 apiserver.demo 为 您想要的 dnsName
export APISERVER_NAME=itbestboy.com
# Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
export POD_SUBNET=10.100.0.1/16
echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts
curl -sSL https://kuboard.cn/install-script/v1.19.x/init_master.sh | sh -s 1.19.5

在这里插入图片描述

2.3.3、查看master节点的初始化结果
# 查看所有的容器组是否处于 Running 状态,大概需要等待3-5分钟
watch kubectl get pod -n kube-system -o wide

在这里插入图片描述
等待3-5分钟就可以看到初始化结果
在这里插入图片描述
当所有容器都处于running状态时,就可以查看master节点的初始化结果

# 查看 master 节点初始化结果
kubectl get nodes -o wide

在这里插入图片描述

2.3.4、获取token,用于其他服务器加入集群

此命令只在master节点执行

#只在master节点执行,获取的token信息有效期为2个小时
  kubeadm token create --print-join-command

在这里插入图片描述

2.3.5 初始化worker节点
#只在worker节点执行
#IP地址为master节点的IP
export MASTER_IP=192.168.227.10
#初始化 master 节点时所使用的 APISERVER_NAME
export APISERVER_NAME=itbestboy.com
export POD_SUBNET=10.100.0.1/16
echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts
#在master节点生成的token信息
kubeadm join itbestboy.com:6443 --token wn2p9z.ozp8qr2p1uz63nkk     --discovery-token-ca-cert-hash sha256:edb404c9759d0b9c4b76287d83999b22ced8457f6562a315c1a2ecb0b254ca23

在这里插入图片描述
在master节点上检查各个节点的状态

kubectl get nodes -o wide

在这里插入图片描述

需要等待3分钟左右才会变成Ready状态

2.4、安装可视化工具

2.4.1 、安装

在master节点上执行

kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml

在这里插入图片描述

如果想自定义可视化工具的连接端口,环境等,可以将kuboard-v3-swr.yaml下载下来,然后手动更改里面的内容 ,然后上传至master所在的服务器,执行 kubectl apply -f kuboard-v3-swr.yaml

2.4.2 、查看

首先查看容器组是否全部处于running状态

watch kubectl get pods -n kuboard

在这里插入图片描述
其次通过浏览器查看

地址 : http://192.168.227.10:30080/

用户名 :admin

密码 :Kuboard123
在这里插入图片描述
在这里插入图片描述

3、部署命令脚本

#前期准备,master worker节点都需要执行
#查看修改IP地址(若为云服务器,此步忽略)
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#测试两台服务器之间是否可通
ping 192.168.227.11
#关闭防火墙
systemctl stop firewalld
systemctl diable firewalld
#查看系统版本是否一致,建议最好一致,否则会报歇莫名其妙的错误
cat /etc/redhat-release 
#查看cpu核数
lscpu
#查看内存空间
free -h
#查看主机名
hostname
#修改主机名
hostnamectl set-hostname=k8smaster
#worker节点执行
hostnamectl set-hostname=k8sworker
#主机名映射
echo "127.0.0.1 $(hostname)" >> /etc/hosts
#安装,需要在master节点和worker节点中都执行
export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com
curl -sSL https://kuboard.cn/install-script/v1.19.x/install_kubelet.sh | sh -s 1.19.5

#只在 master 节点执行
#替换 x.x.x.x 为 master 节点实际 IP(请使用内网 IP)
export MASTER_IP=192.168.227.10
#替换 apiserver.demo 为 您想要的 dnsName
export APISERVER_NAME=itbestboy.com
#Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
export POD_SUBNET=10.100.0.1/16
echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts
curl -sSL https://kuboard.cn/install-script/v1.19.x/init_master.sh | sh -s 1.19.5

#执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态
watch kubectl get pod -n kube-system -o wide

#查看 master 节点初始化结果
kubectl get nodes -o wide

#只在 master 节点执行 得到
kubeadm token create --print-join-command
#获取的token信息,有效期2个小时
#kubeadm join itbestboy.com:6443 --token wn2p9z.ozp8qr2p1uz63nkk     --discovery-token-ca-cert-hash sha256:edb404c9759d0b9c4b76287d83999b22ced8457f6562a315c1a2ecb0b254ca23
#在worker节点中执行
#替换 x.x.x.x 为 master 节点的内网 IP
export MASTER_IP=192.168.277.10
#替换 apiserver.demo 为初始化 master 节点时所使用的 APISERVER_NAME
export APISERVER_NAME=itbestboy.com
echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts
#替换为 master 节点上 kubeadm token create 命令的输出
kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt     --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303

#安装可视化管理工具,只在master节点上执行
#kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
#您也可以使用下面的指令,唯一的区别是,该指令使用华为云的镜像仓库替代 docker hub 分发 Kuboard 所需要的镜像
kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
#查看容器组是否全部running
watch kubectl get pods -n kuboard
#查看所有节点是否都处于reday状态
kubectl get nodes -o wide 
#卸载
kubectl delete -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
rm -rf /usr/share/kuboard  #彻底清除数据在 master 节点以及带有 k8s.kuboard.cn/role=etcd 标签的节点上执行

### Kubernetes容器云平台迁移项目的实例与案例 在实际生产环境中,KubernetesK8s)作为主流的容器编排平台,其迁移项目通常涉及多个层面的技术挑战和解决方案。以下是几个典型的Kubernetes容器云平台迁移项目的实例或案例: #### 1. 数据中心之间的K8s集群迁移 当企业需要将现有的Kubernetes集群从一个数据中心迁移到另一个数据中心时,通常会面临网络延迟、数据一致性以及服务可用性的挑战。这种场景下,可以通过以下方式实现平滑过渡: - 使用跨区域的负载均衡器来逐步切换流量。 - 利用Velero等工具备份并恢复持久化存储卷的数据[^1]。 #### 2. 多云环境下的K8s迁移 对于希望降低供应商锁定风险的企业来说,多云策略是一个常见选择。在这种情况下,Kubernetes集群可能需要从AWS迁移到GCP或者Azure等其他公有云平台上运行。为了顺利完成这一过程,可以采用以下技术手段: - 部署像Rancher这样的统一管理工具,它能够帮助管理员轻松地跨越不同基础设施提供商操作多个K8s集群[^2]。 - 应用层面上利用Istio之类的服务网格产品增强微服务间的通信能力,在迁移期间保持业务连续性。 #### 3. 虚拟机到容器化的转型 一些传统应用程序初是在虚拟机上构建起来的;然而随着技术进步,越来越多公司倾向于将其转换成基于Docker镜像形式打包的应用程序,并终托管于K8s之上。此类迁移活动往往涉及到以下几个方面的工作内容: - 对现有VM中的软件栈进行全面分析评估之后重新设计适合新架构需求的新版本; - 自动化CI/CD流水线创建以便快速迭代开发周期同时减少人为干预带来的潜在失误概率增加情况发生几率等问题处理机制建立完善措施落实到位等方面考虑因素较多因此需谨慎对待每一个环节步骤执行细节部分特别注意安全防护等级设置合理范围之内即可满足大多数常规用途所需基本功能要求标准规范指南遵循原则遵守规定条款严格执行命令指示行动方案计划安排时间表进度跟踪监督考核评价体系健全完备制度建设加强培训教育提高员工综合素质水平提升整体工作效率效益大化目标达成共识共同奋斗努力拼搏进取精神风貌展现出来给外界留下良好印象形象树立起正面典型示范作用发挥积极影响带动周围同事一起前进共创美好未来明天辉煌成就梦想成真之路越走越宽广无限风光尽收眼底一览众山小胸襟开阔视野拓展思维活跃创新意识强烈求知欲望旺盛学习氛围浓厚交流互动频繁资源共享互利共赢局面形成良性循环生态链闭环结构稳定可靠性能优越卓越品质保障承诺兑现信誉至上客户满意至上经营理念深入人心广泛传播推广普及开来成为行业标杆引领潮流趋势发展方向明确坚定信心满满勇往直前无惧风雨兼程同行共勉励精图治再创佳绩续写传奇篇章永载史册留名青史流芳百世传颂千古绝唱! ```bash kubectl get pods --all-namespaces ``` 上述脚本可用于查看整个K8s集群内的Pod状态,这对于监控迁移过程中各组件健康状况非常有用[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值