某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 学习建议

  • Docker命令大全
  • Kubernetes教程

    • Kubernetes(K8s)学习教程 - 前言
    • 第1章-Kubernetes集群部署
    • 第2章-便捷性设置以及集群插件的安装
    • 第3章-基础操作
    • 第4章-集群升级
    • 第5章-Pod
    • 第6章-Pod生命周期与资源限制
    • 第7章-Pod与节点
    • 第8章-控制器Deployment
    • 第9章-Deployment镜像变更和滚动更新
    • 第10章-其他控制器-以及标签表达式
    • 第11章-控制器与节点驱逐
    • 暂缓更新
    • 练习题

    • 常用命令及yaml配置

      • 常见的集群配置文件
      • kubectl

      • kubeadm

      • ctr

      • etcd(etcdctl)

      • yaml常用配置项

        • Pod文件常用配置项
        • LimitRange文件常用配置项
        • ResourceQuota文件常用配置项
        • 控制器(Deployment)
        • 水平自动扩缩(HPA)
        • 其他控制器(DS、RC和RS)
        • 持久卷(PV)
        • 持久卷申领(PVC)
        • 存储类(StorageClass)
        • Secret
        • ConfigMap
        • 任务(Job)
        • 周期任务(CronJob)
        • 服务(Service)
          • 一个简单的Service
            • 通过变量的方式使用服务
            • 借助集群的 coreDNS 使用服务
          • CKS安全-最小化外部接入网络
        • 路由规则(Ingress)
        • 网络策略(NetworkPolicy)
        • 角色(Role)
        • 角色绑定(RoleBinding)
        • 集群角色(ClusterRole)
        • 集群角色绑定(ClusterRoleBinding)
        • 证书签名请求(CertificateSigningRequest)
      • 具有特殊作用的标签或注释

  • CKS教程

  • 云原生安全
  • Kubernetes教程
  • 常用命令及yaml配置
  • yaml常用配置项
carsaid
2023-11-28
目录

服务(Service)

# Service 常用配置项

学习更多

官方文档-服务(Service) (opens new window)

# 1一个简单的Service

apiVersion: v1
kind: Service
metadata:
  name: svc1
spec:
  ports:
  - port: 80            # 服务端口
    targetPort: 80      # 转发到目标容器的端口
  selector:
    app: web            # 根据哪些标签来追踪 Pod
1
2
3
4
5
6
7
8
9
10

# 通过变量的方式使用服务

首先创建一个服务,后续创建的 Pod 将会自动学习到一些变量。

  • 变量<服务名>_SERVICE_HOST是某个服务的 IP 地址
  • 变量<服务名>_SERVICE_PORT是某个服务暴露的端口

例如,创建了一个名为svc1的服务。

kubectl expose pod pod-mysql --name svc1 --port=3306
1

然后,你可以在 yaml 文件中使用这个服务的环境变量。

spec:
  containers:
  - image: wordpress
    name: c1
    env:
    - name: WORDPRESS_DB_HOST
      value: $(SVC1_SERVICE_HOST)       # 自动转换为 svc1 的 IP 地址
1
2
3
4
5
6
7

注意

该方式有要求限制:

  • 服务和 Pod 必须处于同一个命名空间
  • 存在创建的先后顺序,必须先创建服务,再创建 Pod,这样 Pod 才能学习到该服务的相关变量

# 借助集群的 coreDNS 使用服务

任何命名空间的服务,在创建时都会向集群 DNS 注册自身。

直接指定服务名称即可:

spec:
  containers:
  - image: wordpress
    name: c1
    env:
    - name: WORDPRESS_DB_HOST
      value: svc1               # 去 coreDNS 查询主机名 svc1 并返回其地址
1
2
3
4
5
6
7

# CKS安全-最小化外部接入网络

通过字段spec.loadBalancerSourceRanges实现,参阅文档 (opens new window)。

当使用spec.type: LoadBalancer的服务时,可以使用spec.loadBalancerSourceRanges指定允许访问负载均衡器的 IP 范围。此字段采用 IP CIDR 范围列表,Kubernetes 将使用这些范围来配置防火墙例外。目前,仅 Google Compute Engine、Google Container Engine 和 AWS 支持此功能。如果云提供商不支持该功能,则将忽略此字段。

假设10.0.0.0/8是内部子网。在以下示例中,将创建一个负载均衡器,该负载均衡器只能由群集内部 IP 访问。这将不允许来自 Kubernetes 集群外部的客户端访问负载均衡器。

apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  ports:
    - port: 8765
      targetPort: 9376
  selector:
    app: example
  type: LoadBalancer
  loadBalancerSourceRanges:
  - 10.0.0.0/8
1
2
3
4
5
6
7
8
9
10
11
12
13

下面的示例创建了一个负载均衡器,该负载均衡器只允许 IP 地址为130.211.204.1和130.211.204.2的客户端访问:

apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  ports:
    - port: 80
      targetPort: 8080
  selector:
    app: example
  type: LoadBalancer
  loadBalancerSourceRanges:
  - 130.211.204.1/32
  - 130.211.204.2/32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
编辑 (opens new window)
周期任务(CronJob)
路由规则(Ingress)

← 周期任务(CronJob) 路由规则(Ingress)→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式