kubernetes创建资源的两种方式
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,Kubernetes概述Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请
千家信息网最后更新 2025年01月23日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控制器,deployment
3.查看控制器情况
(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.7
5.创建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 wide
2.扩容
[root@master ~]# kubectl scale deployment web --replicas=8
查看一下
[root@master ~]# kubectl get deployments. -o wide
3.缩容
[root@master ~]# kubectl scale deployment web --replicas=4
查看一下
[root@master ~]# kubectl get deployments. -o wide
3.通过修改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.15
1.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 docker
3.上传之前创建的三个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 pod
5.将上述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 wide
7.将上述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安全错误
数据库的锁怎样保障安全
dell服务器从光驱启动
高新区进口服务器代理厂家
完美平台不能在安全服务器
水星服务器推荐
软件开发一般需要多大年龄
vb与sql数据库链接
服务器磁盘阵列和虚拟机系统安装
网络安全手抄报制作素材
数据库中的基本表无法打开
山西企业软件开发服务介绍
山东恒邦网络技术一卡通
大华服务器管理平台怎么添加通道
当图网络安全教育ppt
任务管理 数据库设计
网络安全专业大学美国
dota2部分服务器延迟未知
信息网络安全题
莱阳定制软件开发
人工智能专业毕业做软件开发
远程网关服务器
山西鼎扬网络技术有限公司
计算机网络安全的根本原因
软件开发工程师职责英文素材
软件开发好后怎么赚钱
网络技术属于计算机类么
软件开发新人转正意见
网络信息软件开发是什么
市公安局网络安全宣传活动
数据库配置100M
杭州软件开发定制