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節點。