編寫deployment和service的yaml文件,在kubernates集羣中添加服務。
前提:
1、docker鏡像已存在,名爲mydemoapp,tag爲0.0.1。如果不清楚如何製作自己的docker鏡像,可以參考《構建一個Java應用的Docker鏡像》
2、k8s集羣已搭建成功。
3、應用:端口爲999,有個可訪問的接口名稱爲hello
下面就可以開始手寫yaml文件 ,向k8s集羣中添加自己的服務了。
# mydemoapp-0.0.1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mydemoapp
namespace: default
labels:
app: mydemoapp
spec:
replicas: 2
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
selector:
matchLabels:
app: mydemoapp
template:
metadata:
labels:
app: mydemoapp
spec:
containers:
- name: mydemoapp
image: mydemoapp:0.0.1
ports:
- containerPort: 999
protocol: TCP
imagePullPolicy: IfNotPresent
hostAliases:
- hostnames:
- yourDns_mysql_hostName
ip: 192.168.99.99
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: mydemoapp
namespace: default
labels:
app: mydemoapp
spec:
ports:
- port: 80
targetPort: 999
nodePort: 30001
protocol: TCP
selector:
app: mydemoapp
type: NodePort
創建k8s服務:
[root@dev ~]# kubectl create -f mydemoapp-0.0.1.yaml
deployment.apps/mydemoapp created
service/mydemoapp created
查看k8s狀態:
[root@dev ~]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/mydemoapp-86c57db685-fpn4g 1/1 Running 0 43s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/mydemoapp NodePort 10.96.0.1 <none> 80:30001/TCP 43s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/mydemoapp 1/1 1 1 43s
NAME DESIRED CURRENT READY AGE
replicaset.apps/mydemoapp 1 1 1 43s
訪問應用:
curl http://<yourNodeIp>:30001/hello