Kubernetes1.18實踐及踩坑(之四)部署一個(網頁遊戲)應用

 

1、編輯yml文件

  創建 game2048-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-game-deploy
  labels:
    app: game-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: game-pod
  template:
    metadata:
      labels:
        app: game-pod
    spec:
      containers:
      - name: game
        image: sdscello/2048:7
        ports:
        - containerPort: 80

---

kind: Service
apiVersion: v1
metadata:
  labels:
    app: game-svc
  name: my-game-svc
  namespace: default
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30180
  selector:
    app: game-pod

 注意port, targetPort, nodePort三個端口的區別,詳見:https://blog.csdn.net/GuXiaoyan12/article/details/103751227

2、創建Pod和Service

[root@master01 app]# kubectl apply -f game2048-deploy.yaml

 中間下載Image, 需要一定時間。

 查看運行狀態:

[root@master01 app]# kubectl get svc -A -o wide
NAMESPACE     NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE     SELECTOR
default       kubernetes       ClusterIP   10.10.0.1       <none>        443/TCP                  2d20h   <none>
default       my-game-svc      NodePort    10.10.109.81    <none>        80:30180/TCP             12m     app=game-pod
kube-system   kube-dns         ClusterIP   10.10.0.10      <none>        53/UDP,53/TCP,9153/TCP   2d20h   k8s-app=kube-dns
[root@master01 app]# kubectl get pod -A -o wide
NAMESPACE     NAME                                          READY   STATUS    RESTARTS   AGE     IP                NODE                  NOMINATED NODE   READINESS GATES
default       my-game-deploy-698d6cd68f-77zz9               1/1     Running   0          13m     10.122.123.99     node01.huiyan.com     <none>           <none>
default       my-game-deploy-698d6cd68f-pgrwm               1/1     Running   0          13m     10.122.123.100    node01.huiyan.com     <none>           <none>
default       my-game-deploy-698d6cd68f-z7fjq               1/1     Running   0          13m     10.122.123.98     node01.huiyan.com     <none>           <none>>
kube-system   calico-kube-controllers-555fc8cc5c-tf895      1/1     Running   3          2d20h   10.122.153.202    master01.huiyan.com   <none>           <none>
kube-system   calico-node-8r2q9                             1/1     Running   3          2d20h   192.168.100.226   node01.huiyan.com     <none>           <none>
kube-system   calico-node-ldq4m                             1/1     Running   3          2d20h   192.168.100.206   master01.huiyan.com   <none>           <none>
kube-system   coredns-7ff77c879f-9lqhx                      1/1     Running   3          2d20h   10.122.153.204    master01.huiyan.com   <none>           <none>
kube-system   coredns-7ff77c879f-gxbvv                      1/1     Running   3          2d20h   10.122.153.203    master01.huiyan.com   <none>           <none>
kube-system   etcd-master01.huiyan.com                      1/1     Running   3          2d20h   192.168.100.206   master01.huiyan.com   <none>           <none>
kube-system   kube-apiserver-master01.huiyan.com            1/1     Running   0          65m     192.168.100.206   master01.huiyan.com   <none>           <none>
kube-system   kube-controller-manager-master01.huiyan.com   1/1     Running   0          64m     192.168.100.206   master01.huiyan.com   <none>           <none>
kube-system   kube-proxy-r5kxx                              1/1     Running   0          63m     192.168.100.206   master01.huiyan.com   <none>           <none>
kube-system   kube-proxy-sp8hm                              1/1     Running   1          64m     192.168.100.226   node01.huiyan.com     <none>           <none>
kube-system   kube-scheduler-master01.huiyan.com            1/1     Running   0          64m     192.168.100.206   master01.huiyan.com   <none>           <none>
[root@master01 app]# 

可以看到在節點node01上運行了三個實例。

可通過三種 地址+端口 訪問:

ClusterIP + port : 10.10.109.81 : 80

PodIP + targetPort 10.122.123.98/99/100 : 80

NodeIP + NodePort 192.168.100.226:30180

前兩種只能在集羣內使用,後一種在集羣外也可以作用。

訪問頁面展示如下:

3、在master結點上部署應用

從前面的輸出可以看到,所有實例(Pod)都運行在node01節點上。因爲默認master結點上是不部署Pod的。如果想充分利用master節點資源,可以執行:

[root@master01 app]# kubectl taint nodes --all node-role.kubernetes.io/master-
node/master01.huiyan.com untainted

然後修改game2048-deploy.yaml,將replicas 字段從3改成5,意是是增加兩個實例。

[root@master01 app]# kubectl get pod -A -o wide
NAMESPACE     NAME                                          READY   STATUS    RESTARTS   AGE     IP                NODE                  NOMINATED NODE   READINESS GATES
default       my-game-deploy-698d6cd68f-77zz9               1/1     Running   0          3h37m   10.122.123.99     node01.huiyan.com     <none>           <none>
default       my-game-deploy-698d6cd68f-cd4gw               1/1     Running   0          9m23s   10.122.153.211    master01.huiyan.com   <none>           <none>
default       my-game-deploy-698d6cd68f-pgrwm               1/1     Running   0          3h37m   10.122.123.100    node01.huiyan.com     <none>           <none>
default       my-game-deploy-698d6cd68f-t2wwg               1/1     Running   0          9m23s   10.122.153.212    master01.huiyan.com   <none>           <none>
default       my-game-deploy-698d6cd68f-z7fjq               1/1     Running   0          3h37m   10.122.123.98     node01.huiyan.com     <none>           <none>

可以看到,有兩個pod部署到了master01節點。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章