kubernetes控制器之endpoints、Ingress、DaemonSet、Job、cronJob

kubernetes控制器之endpoints、Ingress、DaemonSet、Job、cronJob

1、EndPoints

收录Pod。也可以说叫管理pod
#创建Service,还会自动创建一个同名的Endpoints。

Service只负责提供一个VIP,EndPoints才是提供负载均衡服务的。 类型ExternalName不可以定义端口和https(证书)

将外部的服务接入集群:
---
kind: Endpoints
apiVersion: v1
metadata:
  name: mysql
subsets:#存活性监测
  - addresses: # 成功的ip
      - ip: 192.168.11.101
    ports:
      - port: 33060
---
kind: Service
apiVersion: v1
metadata:
  name: mysql
spec:
  ports:
    - port: 3306  #端口
      targetPort: 33060

2、Ingress(域名代理)

Ingress
	Nginx Ingress  # 底层是nginx
	Treaket  #性能差
	Istio #有点难


#查看是否启动成功
kubectl get pods -n ingress-nginx 


---
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: django
spec:
  rules: #规则
    - host: www.django.com
      http:
        paths: #访问路径
          - backend: #后端
              serviceName: django
              servicePort: 80
            path: /

# 错误之后,默认跳转的后端
nginx.ingress.kubernetes.io/custom-http-errors: "404,415,500,502"
nginx.ingress.kubernetes.io/default-backend: error

# 永久性重定向
nginx.ingress.kubernetes.io/permanent-redirect: https://www.baidu.com

# 最大链接数
nginx.ingress.kubernetes.io/global-rate-limit: 1

# 白名单
nginx.ingress.kubernetes.io/whitelist-source-range: 192.168.11.102

# 自定义配置
nginx.ingress.kubernetes.io/configuration-snippet: |
    deny 192.168.102;
    allow all;

3、DaemonSet

每一个节点有且只有一个pod,都只是部署一个Pod
#新增节点会自动新增pod  删除节点会自动删除一个pod
收集日志
监控

---
kind: DaemonSet
apiVersion: apps/v1
metadata:
  name: daemonset
spec:
  selector:
    matchLabels:
      app: daemonset
  template:
    metadata:
      labels:
        app: daemonset
    spec:
      containers:
        - name: nginx
          image: nginx
[root@k8s-master-01 k8s]# kubectl set image daemonset/daemonset nginx=nginx:1.19
daemonset.apps/daemonset image updated

4、StatefulSet

有状态集合。启动有顺序

是用在有状态的架构之中。

#依赖servies

MySQL

---
kind: Service
apiVersion: v1
metadata:
  name: statefulset
spec:
  selector:
    app: statefulset
  ports:
    - port: 80
      targetPort: 80
---
kind: StatefulSet
apiVersion: apps/v1
metadata:
  name: statefulset
spec:
  selector:
    matchLabels:
      app: statefulset
  serviceName: statefulset
  template:
    metadata:
      labels:
        app: statefulset
    spec:
      containers:
        - name: nginx
          image: nginx

5、Job

只执行一次。
---
kind: Job
apiVersion: batch/v1
metadata:
  name: job
spec:
  template:
    metadata:
      labels:
        app: job
    spec:
      #只能是never 或者 OnFailure
      restartPolicy: OnFailure
      containers:
        - name: mysql
          image: mysql:5.7
          command:
            - "/bin/sh"
            - "-c"
            - "mysql -uroot -hmysql.mysql.svc.cluster.local -p123456 -e 'select sleep(20);'"



6、cronJob

定时执行Job

---
kind: CronJob
apiVersion: batch/v1beta1
metadata:
  name: cronjob
spec:
  jobTemplate:
    metadata:
      labels:
        app: cronjob
    spec:
      template:
        metadata:
          labels:
            app: cronjob
        spec:
         #只能是never 或者 OnFailure
          restartPolicy: OnFailure
          containers:
            - name: mysql
              image: mysql:5.7
              command:
                - "/bin/sh"
                - "-c"
                - "mysql -uroot -hmysql.mysql.svc.cluster.local -p123456 -e 'select sleep(20);'"
  schedule: '* * * * *'

posted @ 2022-01-09 17:24  迪迦张  阅读(177)  评论(0编辑  收藏  举报