kubernetes部署发布nginx

290 阅读19分钟

一. 前置准备

安装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.