news 2026/8/24 13:30:14

K8s(Kubernetes)简介及部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
K8s(Kubernetes)简介及部署


是容器编排管理平台,用来批量管理 Docker 这类容器,实现容器自动化部署、扩缩容、故障自愈,管理大量容器化应用。

原理
把多台服务器组成集群,划分两类角色:

Master 控制节点:集群大脑,接收用户指令,调度容器,管控集群状态
kube‑apiserver:集群入口,所有请求必经
etcd:集群数据库,保存全部集群配置数据
kube‑scheduler:调度器,决定 Pod 跑在哪台机器
kube‑controller‑manager:控制器,维持资源期望状态
Worker 工作节点:真正跑业务容器的机器
kubelet:节点代理,接收 master 指令,管理本机 Pod
kube‑proxy:网络代理,负责服务网络转发
容器运行时:docker/containerd,真正运行容器
常用名词
Master:集群控制节点,每个集群需要至少一个master节点负责集群的管控
Node:工作负载节点,由master分配容器到这些node工作节点上,然后node节点上的
Pod:kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容器
Controller:控制器,通过它来实现对pod的管理,比如启动pod、停止pod、伸缩pod的数量等等
Service:pod对外服务的统一入口,下面可以维护者同一类的多个pod
Label:标签,用于对pod进行分类,同一类pod会拥有相同的标签
NameSpace:命名空间,用来隔离pod的运行环境

部署

一.构建harbor镜像仓库

1.部署docker本地仓库
搭建本地 docker yum 源

#httpd:apache 网页服务,用来对外提供本地 yum 源访问#![请添加图片描述](https://i-blog.csdnimg.cn/direct/6e0f6e7a9e73499bb1c96e7a8e082f7e.png)createrepo:生成 yum 仓库元数据,制作本地软件源[root@harbor ~]# dnf install httpd createrepo -y[root@harbor ~]# mkdir /var/www/html/docker/ -p[root@harbor ~]# vim /etc/httpd/conf/httpd.conf


[root@harbor ~]# systemctl enable --now httpd

[root@harbor ~]# dnf install docker-ce --downloadonly --destdir /mnt/ -y
[root@harbor ~]# mv /mnt/*.rpm /var/www/html/docker/
[root@harbor ~]# createrepo -v /var/www/html/docker/​

[root@harbor ~]# dnf install docker-ce -y

2.安装docker在harbor仓库节点

[root@harbor ~]# dnf install docker-ce -y[root@harbor ~]# echo br_netfilter > /etc/modules-load.d/docker_mod.conf[root@harbor ~]# modprobe -a br_netfilter[root@harbor ~]# vim /etc/sysctl.d/docker.confnet.bridge.bridge-nf-call-iptables=1net.bridge.bridge-nf-call-ip6tables=1net.ipv4.ip_forward=1[root@harbor ~]# systemctl restart systemd-modules-load.service[root@harbor ~]# sysctl --system[root@harbor ~]# vim /lib/systemd/system/docker.serviceExecStart=/usr/bin/dockerd-Hfd://--containerd=/run/containerd/containerd.sock--iptables=true[root@harbor ~]# systemctl daemon-reload

2.生成key

3.编辑harbor配置文件



![请添加图片描述](https://i-blog.csdnimg.cn/direct/992f6bcac23c4c829242b9bca2d529b2.png
编写启动脚本

4.启动并验证

二.构建部署kubernetes所需主机

关闭swap,所有主机配置

systemctl disable--nowswap.target systemctl mask swap.targetsed'/swap/s/^/#/g'-i/etc/fstab

所有主机彼此建立解析

cat >/etc/hosts <<EOF 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.25.254.150 master 172.25.254.10 node1 172.25.254.20 node2 172.25.254.151 reg.bor.org EOF #所有主机不要忘了自己的解析

所有主机配置kubernetes安装源

vim /etc/yum.repos.d/kubernetes.repo [kubernetes] name = kubernetes baseurl = https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.35/rpm/ gpgcheck = 0 #检测 dnf list kubelet

以上操作完成后重启主机检测swap分区

swapon-s没有任何输出表示ok

安装软件

这里利用ansible安装

1.安装ansible并测试

![请添加图片描述](http
s://i-blog.csdnimg.cn/direct/972740d34c644df6abf93c88056be370.png)





配置文件并检测运行

2.利用ansible剧本部署docker

[devops@harbor ansible]$vimkubernetes-devops.yml - name: devops k8s from ansible hosts: all tasks: - name: setupdockerrepo yum_repository: name:dockerdescription:dockerbaseurl: http://172.25.254.151:4444/docker#harbor ipfile:dockergpgcheck: no - name:installdockerdnf: name: docker-ce state: present - name: setup docker.service replace: path: /lib/systemd/system/docker.service regexp:"ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock"replace:"ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --iptables=true"- name: setupdockerregistry copy: content:|{"registry-mirrors":["https://reg.bor.org"]}dest: /etc/docker/daemon.json - name: setupdockercerts file: path: /etc/docker/certs.d/reg.bor.org state: directory - name:cpcertsfilecopy: src:"{{item.src}}"dest:"{{item.dest}}"loop: - src: /etc/docker/certs.d/reg.bor.org/ca.crt dest: /etc/docker/certs.d/reg.bor.org/ca.crt - src: /etc/docker/certs.d/reg.bor.org/ca.crt dest: /etc/pki/ca-trust/source/anchors/ca.crt - name: load module copy: dest:"{{item.dest}}"content:"{{item.value}}"loop: - dest: /etc/modules-load.d/docker_mod.conf value: br_netfilter - dest: /etc/sysctl.d/docker.conf value:|net.bridge.bridge-nf-call-iptables=1net.bridge.bridge-nf-call-ip6tables=1net.ipv4.ip_forward=1- name: update ca cert shell:"update-ca-trust extract;sysctl --system"- name: start services service: name:"{{item}}"state: restarted enabled:yesloop: -docker- systemd-modules-load.service[devops@harbor ansible]$ ansible-playbook kubernetes-devops.yml

3.利用ansible安装cri-dockerd


[devops@harbor ansible]$vimkubernetes-devops.yml - name: devops k8s from ansible hosts: all become:yestasks: - name: setupdockerrepo yum_repository: name:dockerdescription:dockerbaseurl: http://172.25.254.151:4444/docker#harbor ipfile:dockergpgcheck: no - name:installdockerdnf: name: docker-ce state: present - name: setup docker.service replace: path: /lib/systemd/system/docker.service regexp:"ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock"replace:"ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --iptables=true"- name: setupdockerregistry copy: content:|{"registry-mirrors":["https://reg.bor.org"]}dest: /etc/docker/daemon.json - name: setupdockercerts file: path: /etc/docker/certs.d/reg.bor.org state: directory - name:cpcertsfilecopy: src:"{{item.src}}"dest:"{{item.dest}}"loop: - src: /etc/docker/certs.d/reg.bor.org/ca.crt dest: /etc/docker/certs.d/reg.bor.org/ca.crt - src: /etc/docker/certs.d/reg.bor.org/ca.crt dest: /etc/pki/ca-trust/source/anchors/ca.crt########################################################- name: stup cri-dockerd copy: src:"{{item.src}}"dest:"{{item.dest}}"mode:'0755'loop: - src: ./cri-dockerd/cri-dockerd dest: /usr/bin/cri-dockerd - src:"./cri-dockerd/cri-docker.service"dest:"/lib/systemd/system/cri-docker.service"- src:"./cri-dockerd/cri-docker.socket"dest:"/lib/systemd/system/cri-docker.socket"- name: update ca cert shell:"update-ca-trust extract;sysctl --system;systemctl daemon-reload"- name: start services service: name:"{{item}}"state: restarted enabled:yesloop: -docker- systemd-modules-load.service - cri-docker[devops@harbor ansible]$ ansible-playbook-iinventory kubernetes-devops.yml

4.利用ansible部署k8s软件

[devops@harbor ansible]$vimkubernetes-devops.yml - name:installkubernetes from ansible hosts: all tasks: - name: setup k8s repo yum_repository: name: kubernetes description: kubernetes baseurl: https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.35/rpm file: kubernetes gpgcheck: no - name:installsoftwareinmaster dnf: name:"{{item}}"state: present loop: - kubeadm-1.35.7-150500.1.1 - kubelet-1.35.7-150500.1.1 - kubectl-1.35.7-150500.1.1 when: inventory_hostname=="172.25.254.150"- name:installsoftwareinworknodednf: name:"{{item}}"state: present loop: - kubeadm-1.35.7-150500.1.1 - kubelet-1.35.7-150500.1.1 when: inventory_hostname=="172.25.254.10"or inventory_hostname=="172.25.254.20"- name: setup kubectl kubeadm complication lineinfile: path: /root/.bashrc line:|source<(kubectl completionbash)source<(kubeadm completionbash)when: inventory_hostname=="172.25.254.150"- name: start kubelet service: name: kubelet state: started enabled:yes[devops@harbor ansible]$ ansible-playbook kubernetes-devops.yml

#让补齐功能生效[root@k8s-master mnt]# source ~/.bashrc

三.下载kubernetes集群所需镜像



四.在master中初始化kubernetes集群

在master中完成集群初始化

#每个人不一样,其他主机加入本集群的凭证kubeadmjoin172.25.254.100:6443--tokentdwjoc.8d1yw3wl4r4tm6c4\--discovery-token-ca-cert-hash sha256:6b5950ef2cdba85d6dfdb564ee90d4187fa3d341767dc9852cbdd5c9dee4f927#如果忘记[root@master ~]# kubeadm token create --print-join-commandkubeadmjoin172.25.254.150:6443--tokenuvrr1z.03m17zret5c9gg2t\--discovery-token-ca-cert-hash sha256:9ffa91849f52ea4a831243853f57b068be438867fc4b2e2f2ae78c853ac309ac#如果初始化出问题[root@master ~]# kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock #可以重置集群设定

添加kubernets环境变量到本机

添加node节点到本集群

#删除#kubeadm reset --force --cri-socket unix:///var/run/containerd/containerd.sockrm-rf/etc/kubernetes /var/lib/kubelet /etc/cni/net.d![请添加图片描述](https://i-blog.csdnimg.cn/direct/369a753a87764f639e68baa8cb2779bb.png)

测试

五.安装网络插件


[root@master flannel]# vim kube-flannel.yml[root@k8s-master flannel]# grep -n image: kube-flannel.yml #要改内容所在行的位置148: image: flannel-io/flannel:v0.28.9175: image: flannel-io/flannel-cni-plugin:v1.9.1-flannel3186: image: flannel-io/flannel:v0.28.9


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 13:28:27

单片机毕设项目:基于 51/STM32 单片机的育苗温室多维度环境智能管理系统设计 基于 51/STM32 单片机的小型智能温室硬件控制系统设计(017704)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机&#xff0c;Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华
网站建设 2026/8/24 13:27:17

基于python+深度学习的面部健康特征判别系统的研究与实现

&#x1f497;博主介绍&#xff1a;✌全网粉丝20W,CSDN全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云等平台优质作者,计算机毕设实战导师。目前专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌ &#x1f497;主要服务内…

作者头像 李华
网站建设 2026/8/24 13:25:51

AI Agent自动化短剧生成:告别抽卡式创作,实现单人全流程制作

这次我们来看一个名为“告别抽卡 一人Agent直出ai短剧”的项目。简单说&#xff0c;这是一个利用AI Agent技术&#xff0c;让单个人就能完成从剧本到视频的AI短剧全流程制作的工具或方法。它瞄准的核心痛点&#xff0c;是传统AI视频制作中依赖“抽卡”&#xff08;即反复随机生…

作者头像 李华
网站建设 2026/8/24 13:21:39

Python如何控制gpio

如何使用连接和操作GPIO引脚&#xff1f;我想晓得, 使用时该以怎样的方式去连接, 连接树莓派上的GPIO引脚, 还有常用的办法, 用来控制这些引脚的输入出, 输出入, 输入输出。连接和操作GPIO引脚的方法例如RPi.GPIO库 , 这种可被使用的GPIO库 , 能够去控制树莓派的GPIO引脚。借助…

作者头像 李华
网站建设 2026/8/24 13:20:06

低代码平台数智化:市场新拐点下的开发突围指南

当“降本增效”撞上“智能化瓶颈”过去两年&#xff0c;我们看到了太多关于低代码平台“降本增效”的宣传。但真正在一线推动数字化转型的企业从业者&#xff0c;心里都有一本账&#xff1a;表单和流程搭建确实快了&#xff0c;可业务部门对“智能化”的期待&#xff0c;却往往…

作者头像 李华
网站建设 2026/8/24 13:10:44

小说批量生成多集漫剧全流程实操指南

当前我们拿到的核心生产材料是已取得完整改编授权的长篇网文&#xff0c;全链路需要拆出的核心产物包括全剧统一人物资产库、核心场景资产库、全部分集大纲、单集可拍摄剧本、带资产引用的故事板、可直接导入剪辑工具的漫剧素材包。小云雀AI适配从长文本上传解析、批量分集规划…

作者头像 李华