一. 前置准备
安装3台虚拟机,操作系统centos 7.x版本,并安装kubernetes环境。
mast节点:192.168.200.113 master
node节点1: 192.168.200.114 k8snode1
node节点2:192.168.200.115 k8snode2
二、 部署发布nginx
登录master节点,在master节点中
1. 创建导出到nginx.yml文件中
kubectl create deployment web --image=nginx -o yaml --dry-run > nginx.yml
并根据实际需要修改 nginx.yml文件,例如副本数,卷配置等。我使用默认即可。
2. 创建pod
kubectl apply -f nginx.yml
>> 若使用nginx的默认yml配置,那么其中1,2两步 可以合成1步骤,使用
kubectl create deployment nginx --image=nginx
3. 查看pod
kubectl get pod -o wide
结果如下所示,可以发现nginx的pod部署到了k8snode2机器上。
[root@k8smaster ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
web-5dcb957ccc-czbrb 1/1 Running 0 6m48s 10.244.2.2 k8snode2 <none> <none>
4. 发布应用
kubectl expose deployment nginx --port=80 --type=NodePort
5.查看应用状态
[root@k8smaster ~]# kubectl get pod,svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 39d
nginx NodePort 10.100.19.63 <none> 80:32230/TCP 4m29s
测试:打开浏览器,使用任意一个node节点的ip地址,暴露端口是32230:
http://192.168.200.114:32230 或者 http://192.168.200.115:32230
6. 删除pod
未发布应用时,可以直接删除。
kubectl delete -f nginx.yml
应用发布后,删除pod的正确方法
① 先删除pod
② 再删除对应的deployment
(1)查看运行的pod,根据NAME 删除
[root@k8smaster ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-f89759699-ht7p7 1/1 Running 0 34m
[root@k8smaster ~]# kubectl delete pod nginx-f89759699-ht7p7
pod "nginx-f89759699-ht7p7" deleted
此时kubectl get pod查询,pod并没有正真删除,因为只是删除pod是不管用的,还会看到pod,因为deployment.yaml文件中定义了副本数量。
(2)查看运行的deployment,根据NAME 删除
[root@k8smaster ~]# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 0/1 1 0 35m
[root@k8smaster ~]# kubectl delete deployment nginx
deployment.apps "nginx" deleted
(3)查看运行的pod,已删除
[root@k8smaster ~]# kubectl get pod
No resources found in default namespace.