K8S基础-YAML配置文件

YAML配置文件

YAML是一种简洁的非标记语言.

语法格式:

  • 缩进表示层级关系
  • 不支持制表符"tab"缩进,使用空格缩进
  • 通常开头缩进两个空格
  • 每个冒号后面一定要有空格
  • 想要表示列表项,使用"-"加一个空格,多个项使用同样的缩进级别作为同一个列表的一部分
  • 字符后缩进1空格,如冒号、逗号等
  • "—"表示YAML格式,一个文件的开始
  • "#"注释

文件解析

# 控制器定义
apiVersion:apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: default
spec:
  replicas: 3
  matchLabels:
   app: nginx
# 被控制对象(通过标签匹配上面的控制器)
  template:
   metadata:
    labels:
     app:nginx
   spec:
    containers:
    - name: nginx
      image: nginx:latest
      ports:
      - containerPort: 80

在这里插入图片描述

文件生成

  • 用run命令生成
  kubectl create deployment nginx --image=nginx:v1.18 -o yaml --dry-run > nginx-deployment.yaml
  kubectl expose deloyment nginx --port-80 --target=80 --name=nginx-service --type=NodePort -o yaml --dry-run > nginx-service.yaml
  • 用get命令查看或者导出以有项目配置参数
  kubectl get deployment/nginx -o yaml 
  kubectl get deployment/nginx -o yaml --export > nginx.yaml
  • Pod容器的字段拼写忘记了
  kubectl explain pods.spec.containers

示例

编辑deploy.yaml

vim nginx-depolyment.yaml
apiVersion: apps/v1               #当前格式的版本
kind: Deployment                 #当前创建资源的类型, 当前类型是Deployment
metadata:                        #当前资源的元数据
  name: nginx-deployment             #当前资源的名字 是元数据必须的项
  namespace: web
  labels:
    web: nginx
spec:                            #是当前Deployment的规格说明
  replicas: 3                    #指当前创建的副本数量 默认不填 默认值就为‘1’
  selector:
   matchLabels:
     app: nginx
  template:                      #定义pod的模板
    metadata:                    #当前pod的元数据
      labels:                    #至少顶一个labels标签,可任意创建一个 key:value
        app: nginx
    spec:                        #当前pod的规格说明
      containers:                #容器
      - name: nginx              #是容器的名字容器名字是必须填写的
        image: nginx:1.16        #镜像 镜像的名字和版本
        ports:
        - containerPort: 80

编辑service.yaml

vim nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: web
  labels:
    web: nginx
spec:
  selector:
    app: nginx
  ports:
  - port: 88
    targetPort: 80
    nodePort: 30008
  type: NodePort

注意: 这里的spec下的selector要和deployment.yaml中的对应上,nodePort端口要在aipserver配置文件里设置的端口范围之内

部署

## 部署        
kubectl create -f nginx-depolyment.yaml
kubectl create -f nginx-service.yaml
## 查看部署信息
get all -n web
NAME                                    READY   STATUS    RESTARTS   AGE
pod/nginx-deployment-767cbb69b8-482j2   1/1     Running   0          3m35s
pod/nginx-deployment-767cbb69b8-8prkz   1/1     Running   0          3m35s
pod/nginx-deployment-767cbb69b8-mrbsj   1/1     Running   0          3m35s

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-deployment   3/3     3            3           3m35s

NAME                                          DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-deployment-767cbb69b8   3         3         3       3m35s

## 通过标签查看deploy
kubectl get deploy -n web -l web=nginx
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   3/3     3            3           11m

## 查看服务发布情况
kubectl get svc -n web -l web=nginx
NAME            TYPE       CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
nginx-service   NodePort   10.0.0.116   <none>        88:30627/TCP   29s

kubectl describe svc -n web -l web=nginx
Name:              nginx-service
Namespace:         web
Labels:            web=nginx
Annotations:       <none>
Selector:          app=nginx
Type:              ClusterIP
IP:                10.0.0.116
Port:              <unset>  88/TCP
TargetPort:        80/TCP
Endpoints:         10.244.1.12:80,10.244.2.21:80,10.244.2.22:80
Session Affinity:  None
Events:            <none>

## 访问测试
curl http://10.0.0.116:88

## 更新版本,将配置文件里的nginx:1.16修改为nginx:latest
kubectl replace -f nginx-depolyment.yaml
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值