K8S 之 YAML文件创建各种角色

夙愿已清 提交于 2020-04-01 01:21:45

一、创建单个nginx-pod文件

apiVersion: v1                 #指定api版本,此值必须在kubectl apiversion中 
kind: Pod                        #指定创建资源的角色/类型(pod\deployment\svc)
metadata:                       #资源的元数据/属性
  name: nginx                 #资源的名字,在同一个namespace中必须唯一,pod显示名
  labels:                          #设定资源的标签
    app: web                    #为app标签打上web字段
  namespace: test          #存放的空间
spec:                              #指定该资源的内容 
  containers:                  #该POD运行容器的相关信息
    - name: nginx-test    #容器的名称,docker ps 看到的名称
      image: test-harbor.cedarhd.com/public/nginx:curl        #容器使用的镜像
      ports:                      #指定容器的端口
        - containerPort: 80                      #容器使用的端口

[root@test-nodes1 ~]# kubectl create -f nginx-pod.yaml 
pod/nginx created
[root@test-nodes1 ~]# kubectl get pod -o wide -n test
NAME    READY   STATUS    RESTARTS   AGE   IP           NODE                      NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          13s   172.7.21.7   test-nodes1.cedarhd.com   <none>           <none>

二、创建deployment控制器nginx-dp的yaml文件

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-dp
  namespace: test
spec:
  replicas: 2              #复本数
  template:               #deployment模板内容
    metadata:
      labels:
        app: nginx-proxy
    spec:
      containers:
        - name: nginx
          image: test-harbor.cedarhd.com/public/nginx:curl
          ports:
            - containerPort: 80

[root@test-nodes1 ~]# kubectl create -f nginx-dp.yaml 
deployment.extensions/nginx-dp created
[root@test-nodes1 ~]# kubectl get pod -o wide -n test
NAME                        READY   STATUS    RESTARTS   AGE     IP           NODE                      NOMINATED NODE   READINESS GATES
nginx-dp-856666d759-cwqfc   1/1     Running   0          9m57s   172.7.21.7   test-nodes1.cedarhd.com   <none>           <none>
nginx-dp-856666d759-lvr9c   1/1     Running   0          9m57s   172.7.22.7   test-nodes2.cedarhd.com   <none>           <none>

NAME                       READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-dp   2/2     2            2           8s
NAME                                  DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-dp-856666d759   2         2         2       8s

三、创建svc服务并关联上面的deployment(通过app:nginx-proxy)

apiVersion: v1
kind: Service
metadata:
  name: nginx-dp         #svc的显示名
  namespace: test
spec:
  ports:
    - port: 80
      targetPort: 80
  selector:
    app: nginx-proxy     #关联当前集群上app为nginx-proxy字段

[root@test-nodes1 ~]# kubectl get svc -n test
NAME       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
nginx-dp   ClusterIP   192.168.249.33   <none>        80/TCP    6s
TCP  192.168.249.33:80 nq         #相应的映射
  -> 172.7.21.7:80                Masq    1      0          0         
  -> 172.7.22.7:80                Masq    1      0          0  

四、根据上面svc资源,创建相应的ingress转发规则

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: mingkang-web
  namespace: test
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
    - host: mingkang-web.cedarhd.com         #ingress转发配匹URL地址
      http:
        paths:
          - backend:
              serviceName: nginx-dp                #标签匹配到相应的svc name
              servicePort: 80                             #svc的使用端口

备注:此时我们只需要在DNS解释上,添加mignkang-web.cedarhd.com的IP地址到上层的NGINX代理服务器上,上层NGINX收到请求后,会把请求转发到集群的ingress上,ingress会匹配相应的内容URL,将数据发送到SVC的指定端口,再由SVC把数据转发到POD处理。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!