K8s资源定义haproxy

K8s资源定义haproxy

[root@master httpd]# vim Dockerfile
FROM busybox
RUN mkdir  /data && \
    echo "test page on jjyy" > /data/index.html
ENTRYPOINT ["/bin/httpd","-f","-h","/data"]
[root@master ~]# docker build -t aimmi/httpd:v0.1 httpd

[root@master ~]# vim httpd/Dockerfile 
FROM busybox
RUN mkdir  /data && \
    echo "test page on 666" > /data/index.html
ENTRYPOINT ["/bin/httpd","-f","-h","/data"]
[root@master ~]# docker build -t aimmi/httpd:v0.2 httpd

web1

[root@master ~]# cat manifest/web1.yml 
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web1
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web1
  template:  
    metadata:
      labels:
        app: web1
    spec:
      containers:
      - name: web1
        image: aimmi/httpd:v0.1
        imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
  name: web1
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: web1
  type: NodePort


[root@master ~]# kubectl apply -f manifest/web1.yml 
deployment.apps/web1 created
service/web1 created
[root@master ~]# kubectl get pod,svc
NAME                        READY   STATUS    RESTARTS   AGE
pod/web1-855b788957-x85ds      1/1     Running   0          38m

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        3d9h
service/web1         NodePort    10.97.80.108     <none>        80:31936/TCP   38m

web2

[root@master ~]# cat manifest/web2.yml 
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web2
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web2
  template:  
    metadata:
      labels:
        app: web2
    spec:
      containers:
      - name: httpd
        image: aimmi/httpd:v0.2
        imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
  name: web2
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: web2
  type: NodePort


[root@master ~]# kubectl apply -f manifest/web2.yml 
deployment.apps/web2 created
service/web2 created
[root@master ~]# kubectl get pod,svc
NAME                        READY   STATUS    RESTARTS   AGE
pod/web1-855b788957-x85ds      1/1     Running   0          38m
pod/web2-5f7456967b-t5vqs      1/1     Running   0          3h36m

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP    3d8h
service/web1         NodePort    10.97.80.108     <none>        80:31936/TCP   38m
service/web2         NodePort    10.100.246.130   <none>        80:31413/TCP   3h36m

haproxy

查看在那个节点
[root@master ~]# kubectl get pod -o wide
NAME                       READY   STATUS    RESTARTS   AGE     IP            NODE    NOMINATED NODE   READINESS GATES
haproxy-6bd5fb69d5-fsf7q   1/1     Running   0          29m     10.244.1.63   node1   <none>           <none>
web1-855b788957-x85ds      1/1     Running   0          41m     10.244.1.62   node1   <none>           <none>
web2-5f7456967b-t5vqs      1/1     Running   0          3h39m   10.244.1.47   node1   <none>           <none>

//根据情况选择在哪个节点上创建haproxy_config
[root@localhost /]# cat haproxy_config/RSs.txt 
web1
web2

[root@master ~]# cat manifest/haproxy.yml 
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: haproxy
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: haproxy
  template:  
    metadata:
      labels:
        app: haproxy
    spec:
      containers:
      - image: aimmi/haproxy:v0.2
        imagePullPolicy: IfNotPresent
        name: haproxy
        volumeMounts:
        - name: data
          mountPath: /tmp
      volumes:
      - name: data
        hostPath:
          path: /haproxy_config
          type: Directory

---
apiVersion: v1
kind: Service
metadata:
  name: haproxy
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80

  selector:
    app: haproxy
  type: NodePort



[root@master ~]# kubectl apply -f manifest/haproxy.yml 
deployment.apps/haproxy created
[root@master ~]# kubectl get pod,svc 
NAME                           READY   STATUS    RESTARTS   AGE
pod/haproxy-6bd5fb69d5-fsf7q   1/1     Running   0          26m
pod/web1-855b788957-x85ds      1/1     Running   0          38m
pod/web2-5f7456967b-t5vqs      1/1     Running   0          3h36m

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/haproxy      NodePort    10.100.219.70    <none>        80:31094/TCP   44m
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        3d12h
service/web1         NodePort    10.97.80.108     <none>        80:31936/TCP   38m
service/web2         NodePort    10.100.246.130   <none>        80:31413/TCP   3h36m
posted @ 2021-12-22 12:59  Aimmi  阅读(117)  评论(0)    收藏  举报