【云安全】云原生-K8S-搭建/安装/部署

news/2025/1/30 11:10:35/

一、准备3台虚拟机

务必保证3台是同样的操作系统!

1、我这里原有1台centos7,为了节省资源和效率,打算通过“创建链接克隆”2台出来

2、克隆之前,先看一下是否存在k8s相关组件,或者docker相关组件

3、卸载原有的docker

sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

4、克隆完毕

二、配置3台虚拟机

1、分配角色,修改主机名

hostnamectl set-hostname master-1
hostnamectl set-hostname node1
hostnamectl set-hostname node2#验证hostnamectl status

2、修改/etc/hosts

cat <<EOF >>/etc/hosts
192.168.255.128 master-1
192.168.255.129 node1
192.168.255.130 node2
EOF

3、安装docker-ce

# 安装docker所需的工具yum install -y yum-utils device-mapper-persistent-data lvm2# 配置阿里云的docker源yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 指定安装这个版本的docker-ceyum install -y docker-ce-18.09.9-3.el7# 启动dockersystemctl enable docker && systemctl start docker

4、配置k8s搭建条件

# 关闭防火墙systemctl disable firewalld
systemctl stop firewalld# 临时禁用selinuxsetenforce 0# 永久关闭 修改/etc/sysconfig/selinux文件设置sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config# 禁用交换分区swapoff -a# 永久禁用,打开/etc/fstab注释掉swap那一行sed -i 's/.*swap.*/#&/' /etc/fstab# 修改内核参数cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

5、安装kubeadm、kubelet、kubectl

# 执行配置k8s阿里云源cat <<EOF > /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# 安装kubeadm、kubectl、kubeletyum install -y kubectl-1.16.0-0 kubeadm-1.16.0-0 kubelet-1.16.0-0# 启动kubelet服务systemctl enable kubelet && systemctl start kubelet

三、配置Master管理节点

1、初始化

使用以下命令初始化k8s

kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.16.0 --apiserver-advertise-address 192.168.255.128 --pod-network-cidr=10.244.0.0/16 --token-ttl 0# 下载管理节点中用到的6个docker镜像,你可以使用docker images查看到。这里需要等待两分钟,会卡在[preflight] You can also perform this action in beforehand using ''kubeadm config images pull

初始化完成后会生成如下命令

master 节点依次执行截图上面三条命令

  mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config

测试,查看节点,出现master节点

kubectl get node

node 节点执行下面的命令加入(截图下面的命令)

kubeadm join 192.168.255.128:6443 --token v88kvg.59quk6izz4ndb41w \--discovery-token-ca-cert-hash sha256:e9218e12297174ada4a3f416e04cf67532a8009946565630d3d5fb36aa1caf51 

如果忘记以上命令,可以使用如下命令获取

kubeadm token create --print-join-command

再次查看节点,三个节点都有了,但是STATUS处于“NotReady”

2、安装网络插件

上面虽然三个节点都有了,但是状态都是“NotReady”,这就需要master节点安装以下两个网络插件:calico、flannel

calico

# 安装 calico 网络插件yum install wget
wget https://kuboard.cn/install-script/calico/calico-3.9.2.yaml
export POD_SUBNET=10.244.0.0/16
sed -i "s#192\.168\.0\.0/16#${POD_SUBNET}#" calico-3.9.2.yaml
kubectl apply -f calico-3.9.2.yaml

flannel

安装flannel时,访问外网,需要代理,我这里使用宿主机的clash代理

#虚拟机使用宿主机clash代理export http_proxy=http://192.168.255.1:7890
export https_proxy=http://192.168.255.1:7890

执行以下命令安装flannel 

mkdir -p ~/k8s/
cd ~/k8s
curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml

以上两个插件安装完毕,一切顺利的话,会如下图所示,状态变成“Ready”,大功告成!

四、NotReady问题解决

按照以上操作完成后,发现status还是“NotReady”

如果前面的安装、配置都没问题的话,那极有可能是docker镜像源问题

k8s集群安装配置过程中,在进行集群安装还有网络插件配置的时候,都需要用到docker镜像仓库拉取镜像,随着国内各大docker镜像站都被墙了之后,导致docker拉取镜像都变成了一个难题,一般这时候找到一个可靠的镜像源就能解决问题。

修改配置文件

vim /etc/docker/daemon.json

换成以下镜像源

{"registry-mirrors": ["https://docker.m.daocloud.io","https://noohub.ru","https://huecker.io","https://dockerhub.timeweb.cloud","https://docker.rainbond.cc","https://docker.1ms.run","https://docker.1panel.live","https://hub1.nat.tf"]
}

更换镜像源后,重启,成功

sudo systemctl restart docker

五、其它版本搭建(v1.23)

由于在2022年k8s的1.24版本更新中已经完全放弃了docker作为容器运行时软件,想要继续使用docker作为容器运行时软件,只能安装1.23以下的版本,然后k8s1.23版本支持的最新docker是20.10

参考文章:

K8s安装部署--超级详细(无坑,v1.23)_kubernetes 1.23-CSDN博客

按照这篇文章,也可以成功搭建1.23版本的k8s

自 1.24 版起,Dockershim 已从 Kubernetes 项目中移除。弃用 Docker 这个底层运行时,转而支持符合为 Kubernetes 创建的容器运行接口 Container Runtime Interface (CRI) 的运行时。对于Kubernetes 的终端用户不会有太大影响。这也并不意味着 Docker 已死、也不意味着不能或不该继续把 Docker 用作开发工具。Docker 仍然是构建容器的利器,使用命令 docker build 构建的镜像在 Kubernetes 集群中仍然可以运行。 

六、文末

辞旧迎新,万象更新!在这蛇年来临之际,向网络安全领域的红队、蓝队师傅们送上最诚挚的祝福:红队师傅攻无不克,蓝队师傅守如磐石,新的一年愿你们在赛场上争锋相对,在安全路上并肩而行!蛇年灵动,愿你们敏锐如蛇,攻守皆有道;事业高升,财源滚滚;生活如蛇盘珠玉,圆满无缺!感谢你们的付出,为数字世界的安全保驾护航!新春快乐,阖家幸福,蛇年大吉,安“全”常在!


http://www.ppmy.cn/news/1567875.html

相关文章

PostgreSQL 约束

PostgreSQL 约束 在数据库设计中,约束(Constraint)是一种规则,用于确保数据库中的数据满足特定的条件。PostgreSQL 作为一款功能强大的开源关系型数据库管理系统,提供了多种约束类型,以帮助开发者维护数据的一致性和准确性。本文将详细介绍 PostgreSQL 中常见的约束类型…

OpenAI掀桌子!免费版ChatGPT,提供o3-mini模型!

逆天免费用 今天凌晨&#xff0c;OpenAI联合创始人兼首席执行官Sam Altman宣布了一个大消息——免费版ChatGPT&#xff0c;将提供o3-mini模型&#xff01; 网页们纷纷不淡定了 看来OpenAI&#xff0c;这o3-mini还没正式上线呢&#xff0c;就免费开放使用了。 不过还是要感谢…

ML基础-Jupyter notebook中的魔法命令

在 Jupyter Notebook 或 IPython 环境中&#xff0c;“魔法命令”&#xff08;Magic Commands&#xff09;是一些以百分号&#xff08;%&#xff09;或惊叹号&#xff08;!)开头的特殊命令&#xff0c;用于执行一些与代码运行环境相关的操作&#xff0c;而不仅仅是执行普通的 P…

2025美赛MCM数学建模A题:《石头台阶的“记忆”:如何用数学揭开历史的足迹》(全网最全思路+模型)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ 《石头台阶的“记忆”&#xff1a;如何用数学揭开历史的足迹》 目录 《石头台阶的“记忆”&#xff1a;如何用数学揭开历史的足迹》 ✨摘要✨ ✨引言✨ 1. 引言的结构 2. 撰写步骤 &#xff08;1&#xff09;研究背景 &#…

Java面试题2025-Spring

Spring面试专题 1.Spring应该很熟悉吧&#xff1f;来介绍下你的Spring的理解 1.1 Spring的发展历程 先介绍Spring是怎么来的&#xff0c;发展中有哪些核心的节点&#xff0c;当前的最新版本是什么等 通过上图可以比较清晰的看到Spring的各个时间版本对应的时间节点了。也就是…

26考研资料分享 百度网盘

基础班&#xff1a; 通过网盘分享的文件&#xff1a;2026【考研数学】等3个文件 链接:https://pan.baidu.com/s/1djzJiut1h0DH8WmrI05YHg?pwd1234 提取码:1234--来自百度网盘超级会员v3的分享 通过网盘分享的文件&#xff1a;01、2026【考研政治】 链接:https://pan.baidu.…

练习题 - Django 4.x Auth 身份验证使用示例和配置方法

Django 是一个功能强大且灵活的 Python Web 框架,其内置的身份验证系统使得用户注册、登录、登出等操作变得非常简单。对于初学者或自学者来说,理解并掌握 Django 的身份验证机制,是掌握 Web 开发的关键一步。 在本文中,我们将通过一些实际生活中的示例,逐步探索 Django …

深入理解文件描述符

问题 文件描述符只是一个整数值&#xff0c;那么系统是如何利用这个整数值来完成文件读写的呢&#xff1f; 什么是文件系统&#xff1f; 计算机中用于组织、存储和管理文件的数据结构集合 管理磁盘或其他存储介质上的空间 (将存储介质分块管理)保证文件数据不被破坏&#xf…