千家信息网

kubernetes创建资源有哪些方式

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,Kubernetes概述Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请
千家信息网最后更新 2026年11月03日kubernetes创建资源有哪些方式

Kubernetes概述

Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

Kubernetes 特点

可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)

可扩展: 模块化,插件化,可挂载,可组合

自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

Kubernetes 组件

1Master 组件

1.1kube-apiserver

1.2ETCD

1.3kube-controller-manager

1.4cloud-controller-manager

1.5kube-scheduler

1.6插件 addons

1.6.1DNS

1.6.2用户界面

1.6.3容器资源监测

1.6.4Cluster-level Logging

2节点(Node)组件

2.1kubelet

2.2kube-proxy

2.3docker

2.4RKT

2.5supervisord

2.6fluentd

创建资源的两种方式
1用命令行的方式创建:
了解*
•json格式

[root@master manifests]# pwd
/etc/kubernetes/manifests
[root@master manifests]# vim etcd.yaml

17行:

  • --data-dir=/var/lib/etcd

1.3台导入镜像:nginx.tar httpd.tar
docker load < httpd.tar && docker load < nginx.tar
全部更新镜像:
docker pull nginx
//创建pod控制器,deployment
[root@master ~]# kubectl run web --image=nginx --replicas=5
//查看控制器情况
[root@master ~]# kubectl get deployments.

[root@master ~]# kubectl get pod

//查看资源详细信息
[root@master ~]# kubectl describe deployments. web
//查看命名空间
[root@master ~]# kubectl get namespaces 简写: kubectl get ns

[root@master ~]# kubectl get pod --all-namespaces
Ps:查看某种资源对象,没有指定名称空间,默认是在defaule名称空间。可以加上-n选项,查看指定名称空间的资源。
例如:查看本地资源的名称空间:
[root@master ~]# kubectl get pod -n kube-system
//删除pod,但是还会有
[root@master ~]# kubectl delete pod web-59765d756f-45zp6
//删除控制器,pod也没了
[root@master ~]# kubectl delete deployments. test-web
//查看详细信息:
[root@master ~]# kubectl get pod -o wide
[root@master ~]# kubectl describe pod web-59765d756f-bctvr
[root@master ~]# kubectl get rs

[root@master ~]# kubectl describe rs web-59765d756f
注意:直接运行创建的Deployment资源对象,时经常使用的一个控制器资源类型,除了deployment,还有rc,rs等pod控制器,Deployment是一个高级的pod控制器。
[root@master ~]# kubectl get pod -o wide

[root@master ~]# curl 10.244.2.4

创建service资源类型
[root@master ~]# kubectl get deployments.

[root@master ~]# kubectl expose deployment web --name=web-svc --port=80 --type=NodePort

//查看service资源类型
[root@master ~]# kubectl get svc

[root@master ~]# curl 127.0.0.1:31351
[root@master ~]# curl 10.102.189.154


PS:如果想要外网能够访问服务,可以暴露deployment资源,得到service资源,但svc资源的类型必须为NodePort。
映射端口:3000-32767
服务的扩容与缩容

[root@master ~]# kubectl scale deployment web --replicas=8

输出为json和yaml格式
[root@master ~]# kubectl get deployments. -o json

[root@master ~]# kubectl get deployments. -o yaml
导出:
[root@master ~]# kubectl get deployments. -o yaml > web.yaml
[root@master ~]# kubectl edit deployments. web

服务的升级与回滚:
//升级:
[root@master ~]# docker pull nginx:1.15

[root@master ~]# docker pull nginx:1.14
[root@master ~]# docker tag nginx:latest nginx:v1
[root@master ~]# kubectl set image deployment web web=nginx:1.15


[root@master ~]# kubectl get deployments. -o wide

[root@master ~]# kubectl get pod

[root@master ~]# kubectl get pod -o wide

[root@master ~]# kubectl get deployments. -o wide

[root@master ~]# kubectl describe pod web-ccc7c5cd6-7jlnx
[root@master ~]# kubectl edit deployments. web

//回滚:
[root@master ~]# kubectl rollout undo deployment web

实验:
sha作业:
1)基于httpd制作自己的镜像,需要3个版本,v1,v2,v3.并且对应的版本镜像,访问的主目录内容不一样,分别为v1:

xxx | test-web | httpd | v1

[root@master ~]# mkdir {v1,v2,v3}
[root@master ~]# cd v1
[root@master v1]# echo "

songkaixiong | test-web | httpd | v1

" >> index.html
[root@master v1]# cat index.html

songkaixiong | test-web | httpd | v1


[root@master v1]# cat Dockerfile
FROM httpd:latest
COPY index.html /usr/local/apache2/htdocs/index.html
[root@master v1]# docker build -t 192.168.1.10:5000/httpd:v1 .

[root@master ~]# cd ../v2/
[root@master v2]# echo "

songkaixiong | test-web | httpd | v2

" >> index.html
[root@master v2]# cat index.html

songkaixiong | test-web | httpd | v2


[root@master v2]# cat Dockerfile
FROM httpd:latest
COPY index.html /usr/local/apache2/htdocs/index.html
[root@master v2]# docker build -t 192.168.1.10:5000/httpd:v2 .

[root@master v2]# cd ../v3
[root@master v3]# echo "

songkaixiong | test-web | httpd | v3

" >> index.html
[root@master v3]# cat index.html

songkaixiong | test-web | httpd | v3


[root@master v3]# cat Dockerfile
FROM httpd:latest
COPY index.html /usr/local/apache2/htdocs/index.html
[root@master v3]# docker build -t 192.168.1.10:5000/httpd:v3 .

2)在k8s集群内启用私有仓库registry或Harbor。

[root@master v3]# docker pull registry:2
[root@master v3]# docker run -itd --name registry --restart=always -p 5000:5000 registry:2
[root@master v3]# vim /usr/lib/systemd/system/docker.service
13行:
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.10:5000
[root@master v3]# systemctl daemon-reload
[root@master v3]# systemctl restart docker
[root@master v3]# scp /usr/lib/systemd/system/docker.service node02:/usr/lib/systemd/system
[root@master v3]# scp /usr/lib/systemd/system/docker.service node03:/usr/lib/systemd/system
[root@node02 ~]# systemctl daemon-reload
[root@node02 ~]# systemctl restart docker
[root@node03 ~]# systemctl daemon-reload
[root@node03 ~]# systemctl restart docker

[root@master v3]# docker push 192.168.1.10:5000/httpd:v1
[root@master v3]# docker push 192.168.1.10:5000/httpd:v2
[root@master v3]# docker push 192.168.1.10:5000/httpd:v3

3)部署一个Deployment资源对象,要求镜像使用上述私有镜像v1版本。6个副本Pod。

[root@master ~]# kubectl run httpdtest --image=192.168.1.10:5000/httpd:v1 --replicas=6



4)将上述Deployment暴露一个service资源对象,使外网能否访问服务。

[root@master ~]# kubectl expose deployment httpdtest --name=httpd-svc --port=80 --type=NodePort

5)将上述Deployment进行扩容和缩容操作,扩容为8个副本Pod,然后缩容为4个副本Pod。
[root@master ~]# kubectl scale deployment httpdtest --replicas=8

[root@master ~]# kubectl scale deployment httpdtest --replicas=4

6)将上述Deployment进行升级与回滚操作,将v1版本,升级到v2版本。
[root@master ~]# kubectl set image deployment httpdtest httpdtest=192.168.1.10:5000/httpd:v2

[root@master ~]# kubectl rollout undo deployment httpdtest

2配置清单:

apiVersion:api版本信息

kind:资源对象的类别

metadata:元数据。名称字段必写。

spec:用户期望的状态。

status:资源现在处于什么样的状态。

使用yaml文件的方式创建一个Deployment资源对象,要求镜像使用个人私有镜像v1版本。replicas为3个。
[root@master ~]# vim skx.yaml

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: web
spec:
replicas: 3
template:
metadata:
labels:
app: web_server
spec:
containers:

  • name: httpd
    image: 192.168.1.10:5000/httpd:v1
    [root@master ~]# kubectl apply -f skx.yaml

使用yaml文件的方式创建一个Service资源对象,要与上述Deployment资源对象关联,type类型为: NodePort,端口为:30123.
[root@master ~]# vim skx-svc.yaml
kind: Service
apiVersion: v1
metadata:
name: skx-svc
spec:
type: NodePort
selector:
app: web_server
ports:

  • protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 30123
    [root@master ~]# kubectl apply -f skx-svc.yaml

资源 对象 镜像 版本 控制器 应用 控制 名称 容器 空间 类型 方式 升级 服务 私有 信息 副本 实例 组件 均衡 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 亿人帮互联网科技有限公司 互联网科技官网 互联网金融 科技 互联网科技公司怎么样 万达互联网科技 互联网金融科技委员会 美国互联网前沿科技 安控科技rtu产品工业互联网 广州慧亚互联网科技怎么样 北京华百购互联网科技有限公司 黑科技闪耀互联网之光 晓花互联网科技有限公司网址 互联网5g黑科技有哪些 华夏恒生科技与互联网科技 工业互联网展湾科技股份有限公司 互联网科技资金流入 郑州欣桑互联网科技有限公司 济南小医互联网科技有限公司招聘 唯美互联网科技 美国五大互联网科技公司市值多少 科技金融是不是互联网金融 互联网最新的科技有限公司 互联网科技网站 一五八零互联网科技 互联网科技公司实习生 互联网科技创新的路径 工业互联网山东科技大学 互联网与数字科技关系 江苏互联网科技小贷 唐山双旺合互联网科技产业园
0