当前位置: 首页 > news >正文

搭建Kubernetes集群

提示:文章相关组件尽可能查看官方文档,可能会有所改动

文章目录

  • 前言
  • 一、服务器搭建
  • 二、配置Docker环境
  • 三、修改服务器配置
    • (一)修改三台机器的hostname及hosts文件
      • (1)修改hostname
      • (2)修改hosts文件
    • (二)关闭防火墙和关闭SELinux
      • (1)关闭防火墙
      • (2)关闭SELinux
    • (三)所有节点关闭swap
    • (四)设置系统参数
    • (五)安装 cri-dockerd
      • (1)官方下载地址
      • (2)上传文件并安装
      • (3)指定依赖镜像地址
  • 四、搭建K8S集群环境
    • (一)配置Kubernetes的yum镜像源
    • (二)安装 kubelet kubeadm kubectl
    • (三)Kubernetes集群初始化
    • (四)初始化部署容器网络(CNI)
    • (五)部署 Dashboard
  • 总结


前言

提示:本次搭建环境是基于CentOS8环境搭建:

Kubernetes(简称,K8S)是Google开源的容器集群管理系统,在Docker技术的基础上,为容器化的 应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的 便捷性。 其主要功能如下:
1.使用 Docker对应用程序包装(package)、实例化(instantiate)、运行(run)。 以集群的方式运行、管理跨机器的容器。
2.以集群的方式运行、管理跨机器的容器。
3.解决 Docker跨机器容器之间的通讯问题。解决Docker跨机器容器之间的通讯问题。
4.Kubernetes 的自我修复机制使得容器集群总是运行在用户期望的状态


提示:以下是本篇文章正文内容,下面案例可供参考

一、服务器搭建

准备三台CentOS虚拟机,并且保证虚拟机能够连接上网络。并且配置好固定的IP地址,如果是在正式服务器上,后续直接使用内网地址,保证三台机器能连通。
​​​​​​在这里插入图片描述

确定自己虚拟机版本号

cat /etc/os-release

在这里插入图片描述
更新本地YUM镜像源,以及系统软件。

yum update

如果报错如下:
在这里插入图片描述
进入yum镜像源目录

cd /etc/yum.repos.d

将如下系统的镜像源备份,重新下载阿里云镜像源
在这里插入图片描述
备份

mkdir ./backip
mv ./*repo ./backup

下载新的镜像源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo

在这里插入图片描述
重新加载yum数据源

yum clean all
dnf makecache
yum update

二、配置Docker环境

安装Docker 查看博主Docker专栏,有关Docker安装教程
在此文件下:

/etc/docker/daemon.json

添加如下配置:

"exec-opts": ["native.cgroupdriver=systemd"]

重新加载配置文件

sudo systemctl daemon-reload

重启docker

systemctl restart docker

三、修改服务器配置

(一)修改三台机器的hostname及hosts文件

(1)修改hostname

hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2

bash

在这里插入图片描述

(2)修改hosts文件

sudo bash -c 'cat >> /etc/hosts << EOF
172.16.3.226 k8s-master
172.16.3.224 k8s-node1
172.16.3.225 k8s-node2
EOF'

在这里插入图片描述

(二)关闭防火墙和关闭SELinux

(1)关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

在这里插入图片描述

(2)关闭SELinux

setenforce 0 #临时关闭 ,重启服务器后失效
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久关闭

查看是否已经关闭

vim /etc/selinux/config

在这里插入图片描述

(三)所有节点关闭swap

swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
vim /etc/fstab

在这里插入图片描述

(四)设置系统参数

设置允许路由转发,不对bridge的数据进行处理

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF


sysctl --system  # 使其参数生效

(五)安装 cri-dockerd

(1)官方下载地址

https://github.com/Mirantis/cri-dockerd/releases

在这里插入图片描述

(2)上传文件并安装

创建安装包目录文件,上传到该文件下,方便管理

mkdir /opt/install

安装

rpm -ivh cri-dockerd-0.3.14-3.el8.x86_64.rpm

在这里插入图片描述

(3)指定依赖镜像地址

vim /usr/lib/systemd/system/cri-docker.service
unix:///var/run/cri-dockerd.sock --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9

在这里插入图片描述
重新加载配置文件

systemctl daemon-reload

启动 cri-docker

systemctl enable cri-docker && systemctl start cri-docker

查看 cri-docker 是否启动成功

systemctl status cri-docker

在这里插入图片描述

四、搭建K8S集群环境

(一)配置Kubernetes的yum镜像源

现在kubernetes 的CentOS8的镜像源是用的CentOS7的,不影响下载

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

重新加载源数据

dnf makecache

(二)安装 kubelet kubeadm kubectl

Kubernetes 官方网站:

https://kubernetes.io/

Kubernetes 官方文档:

https://kubernetes.io/zh-cn/docs/home/

安装

yum install -y kubelet kubeadm kubectl

设置开机自启动。先别急着启动

systemctl enable kubelet

查看版本号

kubelet --version

在这里插入图片描述

(三)Kubernetes集群初始化

kubeadm init \
  --apiserver-advertise-address=172.16.3.226 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.28.2 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16 \
  --cri-socket=unix:///var/run/cri-dockerd.sock \
  --ignore-preflight-errors=all

在这里插入图片描述

kubeadm join 172.16.3.226:6443 --token ek1so5.3dkiv339qj0i8q2f \
        --discovery-token-ca-cert-hash sha256:cd32e3e588ebabd3a07632966e4f556ed59ee8bd17707d24aa38c855a731e3cd 
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

kubectl get nodes

在这里插入图片描述

加入Kubernetes Node

kubeadm join 172.16.3.226:6443 --token ek1so5.3dkiv339qj0i8q2f \
        --discovery-token-ca-cert-hash sha256:cd32e3e588ebabd3a07632966e4f556ed59ee8bd17707d24aa38c855a731e3cd --cri-socket=unix:///var/run/cri-dockerd.sock

在这里插入图片描述

(四)初始化部署容器网络(CNI)

Calico是一个纯三层的数据中心网络方案,是目前Kubernetes主流的网络方案
官方部署文档:https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart
创建部署资源:

kubectl create -f tigera-operator.yaml 
kubectl create -f custom-resources.yaml

应用启动完成后,查看Pod状态

kubectl get pods -n calico-system

在这里插入图片描述

(五)部署 Dashboard

Dashboard是官方提供的一个UI,可用于基本管理K8s资源
YAML下载地址:

https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

修改文件端口号以及type
在这里插入图片描述
执行如下命令

kubectl apply -f kubernetes-dashboard.yaml
kubectl get pods -n kubernetes-dashboard

在这里插入图片描述
浏览器访问:主节点(Master)IP地址:30001
在这里插入图片描述
创建service account并绑定默认cluster-admin管理员集群角色:

# 创建用户
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
# 用户授权
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
# 获取用户Token
kubectl create token dashboard-admin -n kubernetes-dashboard

在这里插入图片描述
在这里插入图片描述

看到下面这个页面就集群成功了

在这里插入图片描述

简单做一个Nginx集群部署测试一下我们搭建的环境
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
浏览器能打开Nginx就证明环境成功搭建
在这里插入图片描述

总结

以上就是搭建K8s集群环境的步骤

相关文章:

  • @Autowired 和 @Resource 注解的区别
  • 德昂观点:如何看待MicroStrategy改名为Strategy?
  • 十六进制(Hexadecimal)简介
  • 【漫话机器学习系列】161.验证曲线(Validation Curve)
  • vscode正则表达式使用
  • Python:进程间的通信,进程的操作队列
  • 什么是ecovadis验厂?ecovadis验厂的好处?ecovadis验厂的重要意义
  • LangGraph 怎么控制递归次数
  • mapbox进阶,添加鹰眼图控件
  • 从零构建大语言模型全栈开发指南:第三部分:训练与优化技术-3.1.1大规模语料库构建(Wikipedia、Common Crawl清洗与分词)
  • 如何通过BinLog日志恢复被删除的数据
  • Linux下解压patchelf - 0.9.tar.gz 文件方法
  • 导游职业资格考试:从迷茫到清晰的备考指南
  • 如何设计一个订单号生成服务?应该考虑那些问题?
  • 真值表向逻辑函数式的转换原理
  • NIO入门
  • 雨锈代码
  • Java-设计模式
  • vulhub靶场Thales通关攻略
  • 记20个忘10个之九:后缀-th
  • WordPress百度自动翻译/西安百度关键词优化排名
  • 做pc端网站服务/哔哩哔哩b站在线看免费
  • 内容营销方案/成都seo优化外包公司
  • 网站服务器怎么维护/西安百度seo推广
  • 网站建设易网宣/站长工具权重查询
  • 精通网站建设 百度云/百度热搜关键词