创建Deployment
在 kubernetes 中,deployment 用来部署应用,常见的集中配置含义如下
nginx-deployment.yml
apiVersion: apps/v1#与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本
kind: Deployment#该配置的类型,我们使用的是 Deployment
metadata:#译名为元数据,即 Deployment 的一些基本属性和信息
name: nginx-deployment#Deployment 的名称
labels:#标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解
app: nginx#为该Deployment设置key为app,value为nginx的标签
spec:#这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用
replicas: 3#使用该Deployment创建一个应用程序实例
selector:#标签选择器,与上面的标签共同作用,目前不需要理解
matchLabels: #选择包含标签app:nginx的资源
app: nginx
template:#这是选择或创建的Pod的模板
metadata:#Pod的元数据
labels:#Pod的标签,上面的selector即选择包含标签app:nginx的Pod
app: nginx
spec:#期望Pod实现的功能(即在pod中部署)
containers:#生成container,与docker中的container是同一种
- name: nginx#container的名称
image: nginx:alpine#使用镜像nginx创建container,
ports:
- containerPort: 80#内部服务暴露的端口
这里面定义nginx使用的镜像和创建多少个实例,以及container命名标记
当我们按照需要配置好deployment,使用kubectl apply 去创建部署(常见的几个 kubectl 命令可能需要记一下)
[root@master nginx]# kubectl apply -f nginx-deployment.yml
deployment.apps/nginx-deployment created
文章图片
创建Service
【在k3s上部署第一个nginx服务】当我们创建部署完毕,nginx 服务仅仅只是部署,我们还需要让它暴露出自己的服务。
这就相当于给局域网里的电脑插上了网线,从此就可以对外公开自己的服务。
nginx-service.yml
apiVersion: v1
kind: Service#该配置的类型,我们使用的是 Service 服务类型
metadata:
name: nginx-service#该服务类型的名称
spec:
selector:#选中的app部署实例
app: nginx #为该Deployment设置key为app,value为nginx的标签
ports:#暴露的端口
- protocol: TCP# 走得tcp 协议
port: 80 #默认端口
targetPort: 80 #内建服务端口
nodePort: 30080 #对外服务端口
type: NodePort
这里面呢,targetPort 就是对应着 deployment 的内网端口,nodePort 则是对外公开的端口。
[root@master nginx]# kubectl apply -f nginx-service.yml
service/nginx-service created
打开浏览器,我们可以看到nginx服务已经对外开启
文章图片
一个nignx服务 已经在集群跑起来了。
推荐阅读
- linux|2022年云原生趋势
- 个人日记|K8s中Pod生命周期和重启策略
- k8s|Scheduling Framework 与 Extender对比及详细介绍
- k8s|k8s(六)(配置管理与集群安全机制)
- 云原生应用之旅—Kubernetes成长记 | 第十站(获取云原生旅行秘籍)
- Kubernetes实战|Kubernetes实战(十九)-CA证书制作
- Kubernetes实战|Kubernetes实战(二十)- Etcd 集群部署
- Kubernetes实战|Kubernetes实战(二十二)-kubernetes二进制文件方式部署集群(下)
- 如何彻底删除EKS中一直卡在Terminating的Namespace