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