k8s-YAML详解

创建一个控制器

复制代码
apiVersion: apps/v1
kind: Deployment
metadata:       //控制器元数据
  labels:      //自定义pod标签
    app: linux-nginx-deployment-label       //标签可以写多个,app值为pod标签
  name: linux-nginx-deployment             //pod名称
  namespace: default                      //pod所属名称空间
spec:   //定义pod规格
  replicas: 1    //副本数
  selector:   //定义标签选择器
    matchLabels:    //定义匹配的标签,标签选择器
      app: linux-nginx-selector      //匹配的目标标签 
  template:         //定义模板,模板起到描述要创建pod的作用
    metadata:      //元数据
      labels:      //模板标签
        app: linux-nginx-selector    //定义标签,必须等于Deployment.spec.seletor.matchLables
    spec:
      containers:
      - name: linux-nginx-container 
        image: nginx
        #command: ["/apps/tomcat/bin/run_tomcat.sh"] #容器启动执行的命令或脚本
        #imagePullPolicy: IfNotPresent
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          protocol: TCP
          name: http
        - containerPort: 443  //端口
          protocol: TCP      //端口使用的协议
          name: https        //端口名称,无实质性作用
        env:
        - name: "password"
          value: "123456"
        - name: "age"
          value: "18"
        resources:            //对资源请求设置限制和上限
          limits:            //容器最大使用资源,上限
            cpu: 2          //CPU的限制,单位为core数
            memory: 2Gi    //内存限制,单位为Mib/Gib,用于docker run --memory参数
          requests:         //资源请求的限制,pod调度时对于node节点的资源请求
            cpu: 1         //CPU请求数,最少使用
            memory: 512Mi   //内存请求大小,调度时使用,定义初始值最小使用
复制代码

创建一个SVC

复制代码
kind: Service
apiVersion: v1
metadata:         //元数据
  name: linux-nginx-svc    //service名称
  namespace: default      //所属namespace,不同namespace资源相互隔离
  labels:                 
    app: linux-nginx     //service标签,用于匹配相同标签的pod,实现转发
spec:
  type: NodePort        //service映射类型
  ports:
  - name: http         //端口名称,无实质性作用
    port: 80          //service端口
    protocol: TCP     //协议类型
    targetPort: 80       //service转发到后端pod的端口
    nodePort: 30001     //映射到node对外暴露的端口
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
    nodePort: 30043
  selector:      //service标签选择器,匹配相同标签的pod,实现转发
    app: linux-nginx-selector   //将流量转发到标签相同的pod,须等于Deploment.spec.selector.matchLables
复制代码

运行后查看svc与pod关联关系

可以看到SVC已经通过标签选择器关联到"app=linux-nginx-selector"的pod。

posted @   不会跳舞的胖子  阅读(403)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示