前言
在之前的博客’kubernetes集群部署
‘中,我们搭建了一个kubernetes集群,由1个master节点和3个worker节点组成;在本文中我们在这个kubernetes集群中部署一个Nginx集群。
部署
创建 Namespace
Namespace 是 Kubernetes 中用于资源隔离的逻辑分区,我们为nginx集群创建一个独立的namespace
1 | kubectl create namespace nginx-namespace |
创建 ConfigMap
ConfigMap 用于将非敏感配置数据(如环境变量、配置文件)与容器镜像解耦,使应用程序的配置更加灵活;
在合适的目录创建文件夹‘kubernetes/nginx’,然后创建nginx-config.yml
文件,完整的 nginx-config.yml
文件如下:
1 | apiVersion: v1 |
应用文件创建configmap
1 | kubectl apply -f nginx-config.yml |
我们部署nginx后,要修改nginx的配置就可以在这个文件中修改,修改配置信息后,可以滚动重启Deployment
1 | kubectl rollout restart deployment nginx-deployment -n nginx-namespace |
创建 Deployment
Deployment 用于管理和部署无状态应用程序,支持滚动更新、回滚和 Pod 的自动扩缩容;一个常见的 deployment 配置包括几个部分:
- spec.selector:用于定义 deployment 如何查找要管理的 pod,例如,使用在 pod 模板中定义的标签,如 app:nginx
- spec.replicas:用于定义需要启动多少个副本
- spec.template:用于定义 pod 的属性,例如,容器名称,容器镜像,labels 字段,等
更详细可以参考官网,在合适的目录创建文件夹‘kubernetes/nginx’,然后创建nginx-dep.yml
文件,完整的 nginx-dep.yml
文件如下:
1 | apiVersion: apps/v1 |
使用文件创建Deployment
1 | kubectl apply -f nginx-dep.yml |
查看创建的Deployment
1 | kubectl get deployment -n redis-namespace |
创建 Service
Service 用于定义一组 Pod 的访问策略,提供稳定的网络端点(IP 和端口),使外部或其他服务可以访问这些 Pod,我们创建一个Service来用于nginx集群的网络访问,在合适的目录创建文件夹‘kubernetes/nginx’,然后在其中创建文件‘nginx-svc.yml’,内容如下:
1 | apiVersion: v1 |
使用文件创建Service
1 | kubectl apply -f nginx-svc.yml |
查看创建的Service
1 | kubectl get service -n redis-namespace |
部署完成
现在我们使用kubernetes集群中的任意节点的ip和nginx-svc.yml中设置的nodePort,就可以访问已经部署的nginx