kubernetes创建资源的两种方式
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,Kubernetes概述Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请
千家信息网最后更新 2025年12月01日kubernetes创建资源的两种方式
Kubernetes概述
Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。
在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理
K8S 的资源有 Pod、Service、Volume、Namespace、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job等等
基于配置文件的方式:
- 配置文件描述了
What,即应用最终要达到的状态。 - 配置文件提供了创建资源的模板,能够重复部署。
- 可以像管理代码一样管理部署。
- 适合正式的、跨环境的、规模化部署。
- 这种方式要求熟悉配置文件的语法,有一定难度。
一,用命令行的方式创建资源
| 主机 | IP地址 |
|---|---|
| master | 192.168.1.21 |
| node01 | 192.168.1.22 |
| node02 | 192.168.1.23 |
仅接受json格式
配置清单(yml、yaml)
[root@master ~]# cd /etc/kubernetes/manifests///k8s的yml、yaml文件1.node01和node02下载nginx镜像
docker pull nginx//下载nginx镜像2.master创建Pod控制器(test-web),deployment
[root@master ~]# kubectl run test-web --image=nginx --replicas=5//创建Pod控制器,deployment3.查看控制器情况
(1)
[root@master ~]# kubectl get deployments.//查看控制器情况
[root@master ~]# kubectl get pod --all-namespaces -o wide//显示pod的节点信息(2)
[root@master ~]# kubectl get namespaces //查看k8s名称空间
[root@master ~]# kubectl describe deployments. test-web//查看资源详细信息查看某种资源对象,没有指定名称空间,默认是在default名称空间。可以加上-n选项,查看指定名称空间的资源。
[root@master ~]# kubectl get pod -n kube-system 3.删除test-web控制器
[root@master ~]# kubectl delete deployments. test-web 4.master创建Pod控制器(web),deployment
[root@master ~]# kubectl run web --image=nginx --replicas=5查看一下pod信息
[root@master ~]# kubectl get pod -o wide//查看一下pod的节点信息[root@master ~]# kubectl describe deployments. web //查看资源详细信息注意:直接运行创建的deployment资源对象,是经常使用的一个控制器资源类型,除了deployment,还有rc、rs等等pod控制器,deployment是一个高级的pod控制器。
本机测试访问nginx
[root@master ~]# curl 10.244.1.75.创建service资源类型
[root@master ~]# kubectl expose deployment web --name=web-xgp --port=80 --type=NodePort//创建service资源类型,这里我们设置了映射端口如果想要外网能够访问服务,可以暴露deployment资源,得到service资源,但svc资源的类型必须为NodePort。
映射端口范围:30000-32767
查看service信息
[root@master ~]# kubectl get svc浏览器测试访问http://192.168.1.21:30493/
二、服务的扩容与缩容
1. 查看控制器信息
[root@master ~]# kubectl get deployments. -o wide2.扩容
[root@master ~]# kubectl scale deployment web --replicas=8查看一下
[root@master ~]# kubectl get deployments. -o wide3.缩容
[root@master ~]# kubectl scale deployment web --replicas=4查看一下
[root@master ~]# kubectl get deployments. -o wide3.通过修改web的yaml文件进行扩容缩容
备份web的yaml文件
[root@master ~]# kubectl get deployments. -o yaml > web.yaml使用edit修改web的yaml文件
[root@master ~]# kubectl edit deployments. web 查看一下
[root@master ~]# kubectl get deployments. -o wide三、服务的升级与回滚
node01和node02下载1.15版本的nginx
[root@master ~]# docker pull nginx:1.151.master设置服务升级
[root@master ~]# kubectl set image deployment web web=nginx:1.15查看一下
2.master设置服务回滚
(1)修改配置文件回滚
使用edit修改web的yaml文件
[root@master ~]# kubectl edit deployments. web 查看一下
[root@master ~]# kubectl get deployments. -o wide(2)命令回滚
[root@master ~]# kubectl rollout undo deployment web 注意:只能回滚到上一次操作的状态
四、小实验
实验环境
| 主机 | IP地址 | 服务 |
|---|---|---|
| master | 192.168.1.21 | registry+Deployment |
| node01 | 192.168.1.22 | |
| node02 | 192.168.1.23 |
1.master 基于httpd制作自己的镜像,需要3个版本,v1,v2,v3.并且对应的版本镜像,访问的主目录内容不一样
(1)master下载httpd镜像
[root@master ~]# docker pull httpd(2)编写Dockerfile
[root@master xgp]# vim DockerfileFROM httpdCOPY index.html /usr/local/apache2/htdocs/index.html(3)创建测试网页v1
[root@master xgp]#echo "xgp | test-web | httpd:v1" > index.html
(4)基于Dockerfile创建镜像 web1
[root@master xgp]# docker build -t web1 .(5)创建测试网页v2
[root@master xgp]#echo "xgp | test-web | httpd:v1" > index.html
(6)基于Dockerfile创建镜像 web2
[root@master xgp]# docker build -t web2 .(7)创建测试网页v3
[root@master xgp]# echo "xgp | test-web | httpd:v3" > index.html
(8)基于Dockerfile创建镜像 web3
[root@master xgp]# docker build -t web3 .2.master部署私有仓库
(1)master下载registry镜像
[root@master ~]# docker pull registry(2)启动registry
[root@master xgp]# docker run -itd --name registry -p 5000:5000 --restart=always registry:latest (3)修改docker配置文件,加入私有仓库(三台)
[root@master xgp]# vim /usr/lib/systemd/system/docker.serviceExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.21:5000(4)重启docker(三台)
[root@master xgp]# systemctl daemon-reload [root@master xgp]# systemctl restart docker3.上传之前创建的三个web镜像到私有仓库
(1)修改镜像标签
[root@master xgp]# docker tag web1:latest 192.168.1.21:5000/web1:latest[root@master xgp]# docker tag web2:latest 192.168.1.21:5000/web2:latest[root@master xgp]# docker tag web3:latest 192.168.1.21:5000/web3:latest(2)将三个web镜像上传到私有仓库
[root@master xgp]# docker push 192.168.1.21:5000/web1:latest [root@master xgp]# docker push 192.168.1.21:5000/web2:latest[root@master xgp]# docker push 192.168.1.21:5000/web3:latest 4.部署一个Deployment资源对象,要求镜像使用上述私有镜像v1版本。6个副本Pod。
[root@master xgp]# kubectl run www1 --image=192.168.1.21:5000/web1:latest --replicas=6查看一下
[root@master xgp]# kubectl get pod5.将上述Deployment暴露一个service资源对象,使外网能否访问服务。
[root@master xgp]# kubectl expose deployment www1 --name=web-xgp --port=80 --type=NodePort查看一下
[root@master xgp]# kubectl get svc浏览器访问一下
6.将上述Deployment进行扩容和缩容操作,扩容为8个副本Pod,然后缩容为4个副本Pod。
(1)扩容
[root@master xgp]# kubectl scale deployment www1 --replicas=8查看一下
[root@master xgp]# kubectl get deployments. -o wide(2)缩容
修改k8s配置文件
备份web的yaml文件
[root@master ~]# kubectl get deployments. -o yaml > www1.yaml使用edit修改web的yaml文件
[root@master ~]# kubectl edit deployments. www1查看一下
[root@master xgp]# kubectl get deployments. -o wide7.将上述Deployment进行升级与回滚操作,将v1版本,升级到v2版本。
(1)升级版本为web2
[root@master ~]# kubectl set image deployment www1 www1=192.168.1.21:5000/web2本机测试访问
[root@master ~]# curl 127.0.0.1:30996xgp | test-web | httpd:v2
浏览器测试访问
(2)回滚版本到web1
<1>修改配置文件回滚
使用edit修改web的yaml文件
[root@master ~]# kubectl edit deployments. www1查看一下
[root@master ~]# kubectl get deployments. -o wide访问一下
<2>命令回滚
[root@master ~]# kubectl rollout undo deployment www1注意:只能回滚到上一次操作的状态
访问一下
____完毕____
资源
文件
镜像
控制器
控制
配置
版本
信息
应用
服务
测试
升级
私有
仓库
名称
容器
对象
空间
类型
管理
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
300738网络安全股票
网络安全手抄报怎么说
江苏润浩达网络技术有限公司名企
eosi.o 软件开发
菏泽网络安全公司
数据库技术最新应用
软件开发公司工资分录
数据库在地理信息中的应用
网络安全就业率多少
智慧导航软件开发
徐汇区应用软件开发培训
电子科大软件开发
可口的披萨正在从服务器登出
怎么解决战地5服务器老是断开
数据库表最多能包含多少条记录
电脑服务器选项
软件开发是学文还是学理
关于网络安全措施
小米路由hd改成服务器
舟山fil服务器价格
服务器崩了自动切换
串口服务器 原理
MIT提出的数据库
加班管理系统数据库课程设计
靖江巨型网络技术哪家好
统计数据库 力学
数据库表最多能包含多少条记录
我的世界骗赞服务器是什么意思
快盘 服务器忙
中宏网河南互联网科技集团