全网最详细k8s搭建部署

目录

Kubernetes的功能:

Kubernetes的特点:

1. 安装要求

2. 部署内容

1、系统环境准备

2、所有禁用swap和本地解析

3、仓库配置,所有安装docker

4、所有节点设定docker的资源管理模式为systemd

5、所有阶段复制harbor仓库中的证书并启动docker 

6、安装K8S部署工具

7、设置kubectl命令补齐功能

8、在所有节点安装cri-docker

9、在master节点拉取K8S所需镜像

10、集群初始化

11、安装flannel网络插件

12、节点扩容


Kubernetes,简称K8s,是由Google在2014年开源的容器集群管理系统。它是基于Google内部使用的Borg系统多年经验开发而成的,旨在帮助用户轻松管理和部署容器化应用程序。Kubernetes具有高度可扩展、自动化和便携性,使其成为现代云原生应用的事实标准。

Kubernetes的功能:

  • 快速部署应用:通过声明式配置,Kubernetes可以快速地将应用程序部署到集群中。
  • 快速扩展应用:Kubernetes可以根据应用负载自动或手动进行横向扩展。
  • 无缝对接新的应用功能:通过滚动更新和回滚功能,Kubernetes能够确保服务的持续可用性。
  • 节省资源,优化硬件资源的使用:Kubernetes的高效调度机制能够最大化硬件资源的利用率。

Kubernetes的特点:

  • 可移植性:Kubernetes支持多种云平台和裸机环境,允许用户在公有云、私有云、混合云甚至多重云环境中无缝迁移和运行。
  • 可扩展性:Kubernetes的架构是模块化的,支持插件化和可组合性,允许用户根据需要添加或自定义功能。
  • 自动化:Kubernetes提供了自动化的部署、重启、复制和扩展/伸缩功能,极大地简化了运维工作。

1. 安装要求

在开始部署Kubernetes集群之前,以下条件必须得到满足:

  • 操作系统:所有节点需要运行CentOS 7.7或更高版本的64位操作系统。
  • 硬件配置
    • 内存:至少2GB RAM。
    • CPU:至少2个CPU核心。
    • 硬盘空间:至少30GB可用空间。
  • 网络配置:所有节点必须能够互相通信,且不需要NAT或端口映射。
  • 互联网访问:节点需要能够访问互联网,以便下载Docker镜像和Kubernetes组件。
  • swap分区:建议关闭swap分区,因为Kubernetes推荐在物理内存不足时进行Pod驱逐,而不是使用swap。

2. 部署内容

  • 软件版本:Kubernetes v1.16.2和Docker v19.03。
  • 部署步骤
    • 在所有节点上安装Docker和Kubernetes的核心组件,如kubeadm和kubelet。
    • 初始化集群并部署Kubernetes Master,这是集群的控制平面。
    • 部署容器网络插件,以实现Pod之间以及Pod与外部世界的通信。
    • 将Kubernetes Node加入到集群中,Node是执行应用程序的工作节点。

以下是详细的部署步骤:

1、系统环境准备

主机IP
k8s-master172.25.254.100
k8s-node1172.25.254.10
k8s-node2172.25.254.20
harbor172.25.254.254

2、所有禁用swap和本地解析

[root@k8s-node1 ~]# systemctl mask swap.target
Created symlink /etc/systemd/system/swap.target → /dev/null.
[root@k8s-node1 ~]# swapoff -a
[root@k8s-node1 ~]# vim /etc/fstab

vim /etc/hosts

3、仓库配置,所有安装docker

vim /etc/yum.repos.d/docker.repo

dnf install docker-ce -y

4、所有节点设定docker的资源管理模式为systemd

vim /etc/yum.repos.d/rhel9.repo

 

5、所有阶段复制harbor仓库中的证书并启动docker 


[root@k8s-hub certs]# for ip in 172.25.254.10 172.25.254.20 172.25.254.100; do
 scp -r 172.25.254.254:/etc/docker/certs.d/reg.cfy.org/ ${ip}:/etc/docker/certs.d/reg.cfy.org/
done

docker info

vim /root/harbor/harbor.yml

docker login reg.cfy.org

6、安装K8S部署工具

#部署软件仓库,添加K8S源
vim /etc/yum.repos.d/k8s.repo
[k8s]
name=k8s
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm
gpgcheck=0

#安装软件
dnf install kubelet-1.30.0 kubeadm-1.30.0 kubectl-1.30.0 -y

7、设置kubectl命令补齐功能

dnf install bash-completion -y
echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc

8、在所有节点安装cri-docker

k8s从1.24版本开始移除了dockershim,所以需要安装cri-docker插件才能使用docker 软件下载:https://github.com/Mirantis/cri-dockerd

 dnf install libcgroup-0.41-19.el8.x86_64.rpm cri-dockerd-0.3.14-3.el8.x86_64.rpm -y

vim /lib/systemd/system/cri-docker.service

ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd://  --network-plugin=cni --pod-infra-container-image=reg.cfy.org/k8s/pause:3.9

systemctl daemon-reload
systemctl start cri-docker
ll /var/run/cri-dockerd.sock

9、在master节点拉取K8S所需镜像

#拉取k8s集群所需要的镜像

kubeadm config images pull \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.30.0 \
--cri-socket=unix:///var/run/cri-dockerd.sock

#上传镜像到harbor仓库

docker images | awk '/google/{ print $1":"$2}' \
| awk -F "/" '{system("docker tag "$0" reg.cfy.org/k8s/"$3)}'

docker images | awk '/k8s/{system("docker push "$1":"$2)}'

10、集群初始化

#启动kubelet服务

systemctl status kubelet.service

#执行初始化命令

kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.cfy.org/k8s --kubernetes-version v1.30.0 --cri-socket=unix:///var/run/cri-dockerd.sock
 

#指定集群配置文件变量

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

#当前节点没有就绪,因为还没有安装网络插件,容器没有运行

kubectl get node

kubectl get pod -A

生成集群token

kubeadm token create --print-join-command

11、安装flannel网络插件

#下载flannel的yaml部署文件

wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

#下载镜像:

docker pull docker.io/flannel/flannel:v0.25.5

解压

docker load -i flannel-0.25.5.tag.gz

#上传镜像到仓库

docker tag flannel/flannel:v0.25.5 \
reg.cfy.org/flannel/flannel:v0.25.5

docker push reg.cfy.org/flannel/flannel:v0.25.5

docker tag flannel/flannel-cni-plugin:v1.5.1-flannel1 \
reg.cfy.org/flannel/flannel-cni-plugin:v1.5.1-flannel1

docker push reg.cfy.org/flannel/flannel-cni-plugin:v1.5.1-flannel1

#编辑kube-flannel.yml 修改镜像下载位置

vim kube-flannel.yml

kubectl apply -f kube-flannel.yml

12、节点扩容

PS:每次初始化失败记得重置kubeadm kubeadm reset

在所有的worker节点中

1 确认部署好以下内容

2 禁用swap

3 安装: kubelet-1.30.0 kubeadm-1.30.0 kubectl-1.30.0 docker-ce cri-dockerd

4 修改cri-dockerd启动文件添加 --network-plugin=cni --pod-infra-container-image=reg.timinglee.org/k8s/pause:3.9

5 启动服务 kubelet.service cri-docker.service

以上信息确认完毕后即可加入集群

[root@k8s-node1 & 2 ~]# kubeadm join 172.25.254.100:6443 --token 8v417e.9gbxi2xx30a66hep --discovery-token-ca-cert-hash sha256:0ef4bb7bcf228f005d6b3cd40a3c3a3ecdd416445db488816145e01bc80bb932 --cri-socket=unix:///var/run/cri-dockerd.sock

在master阶段中查看所有node的状态

kubectl get node

所有阶段的STATUS为Ready状态,那么恭喜你,你的kubernetes就装好了!!

测试集群运行情况

建立一个pod

kubectl run test --image nginx  建立一个pod

kubectl get pods  #查看pod状态

kubectl delete pod test  #删除pod

k8s是一个用于容器编排和管理的开源平台,而Spring Boot是一个用于构建独立的、基于Spring的Java应用程序的框架。使用k8s部署Spring Boot应用程序可以提供更好的可伸缩性、高可用性和容错性。 引用中提到了使用k8s来快速部署一个Spring Boot项目,并体验k8s和实际项目的结合。这意味着通过k8s,你可以轻松地将你的Spring Boot应用程序部署到一个分布式系统中。 引用指出,尽管已经了解了如何通过其他方式部署Spring Boot应用程序,但是了解如何通过k8s部署仍然是必要的。因为k8s提供了许多功能和特性,例如自动扩展、负载均衡和故障恢复等,这些功能可以大大简化和改善应用程序的部署和管理。 引用提到了k8s部署Spring Boot项目的过程是相对简单的,目前可能只是半手动部署,但后续可以引入CICD(持续集成和持续部署)实现真正的自动化部署。这意味着你可以使用k8s和CICD工具来自动化构建、测试和部署Spring Boot应用程序,从而提高开发和部署的效率。 综上所述,通过k8s部署Spring Boot应用程序可以提供更好的可伸缩性、高可用性和容错性,并且可以使用CICD工具实现自动化部署。这将简化和改善应用程序的部署和管理,并提高开发和部署的效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [k8s部署springboot项目](https://blog.csdn.net/qq_34285557/article/details/124460872)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [教你使用k8s部署springboot服务](https://blog.csdn.net/ww2651071028/article/details/129636489)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值