云原生|kubernetes|helm3 自定义离线安装部署ingress-nginx

简介: 云原生|kubernetes|helm3 自定义离线安装部署ingress-nginx

前言:

helm作为kubernetes集群内的专用包管理器还是非常的方便的,只是helm在给我们提供便利的同时又给我们增加了不少的困难,例如,很多新的概念,比如,helm仓库,related版本等等,因此,使用helm也是增加了一部分的学习成本在里面。

本文计划使用helm3快速的离线安装ingress-nginx ,也就是不需要考虑仓库的事情了,本地化的工作也不需要考虑了(本地化指的是部署的时候使用的镜像通常都是国外某些网站的镜像,替换成国内的镜像),组件的问题也不需要考虑了,我都写好了,放到网盘内,需要的朋友直接下载,然后一条命令就可以部署好ingress-nginx了,非常的方便快捷。




相关资料下载地址:

链接:https://pan.baidu.com/s/1SZiXx_XLwt5woKpvgYuLdg?pwd=sdaa
提取码:sdaa

 

相关资料说明:

helm的版本(任意的三版本都可以):

[root@k8s-master ~]# helm version
version.BuildInfo{Version:"v3.2.4", GitCommit:"0ad800ef43d3b826f31a5ad8dfbb4fe05d143688", GitTreeState:"clean", GoVersion:"go1.13.12"}

此次部署使用了三个镜像:

registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller

registry.cnhangzhou.aliyuncs.com_google_containers_defaultbackend_1.4  注意,这个镜像是起保险套的作用,如果ingress清单文件有问题,找不到相对应的资源的时候,这个镜像提供默认的错误页面,例如,ingress的资源清单文件里写错了,访问不到网站了,它就给一个错误页面,省的看到这个页面和管理这个页面的人尴尬!!!!:

 

jettech_kube-webhook-certgen_v1.5.1

部署方式为DaemonSet,因为是ds模式,因此建议master节点不设置污点。

网络模式为hostNetWork ,因此,请确保宿主机的80和443端口没有被占用。




部署命令

helm install ingress  ingress-nginx-3.25.0.tgz -n ingress

此命令的输出为(不要害怕这么长的输出,里面有使用ingress的示例,应该好好看看的哦。):

[root@k8s-master ~]#  helm install ingress  ingress-nginx-3.25.0.tgz -n ingress
NAME: ingress
LAST DEPLOYED: Sun Oct  9 23:00:29 2022
NAMESPACE: ingress
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The ingress-nginx controller has been installed.
Get the application URL by running these commands:
  export HTTP_NODE_PORT=32080
  export HTTPS_NODE_PORT=32443
  export NODE_IP=$(kubectl --namespace ingress get nodes -o jsonpath="{.items[0].status.addresses[1].address}")
  echo "Visit http://$NODE_IP:$HTTP_NODE_PORT to access your application via HTTP."
  echo "Visit https://$NODE_IP:$HTTPS_NODE_PORT to access your application via HTTPS."
An example Ingress that makes use of the controller:
  apiVersion: networking.k8s.io/v1beta1
  kind: Ingress
  metadata:
    annotations:
      kubernetes.io/ingress.class: nginx
    name: example
    namespace: foo
  spec:
    rules:
      - host: www.example.com
        http:
          paths:
            - backend:
                serviceName: exampleService
                servicePort: 80
              path: /
    # This section is only required if TLS is to be enabled for the Ingress
    tls:
        - hosts:
            - www.example.com
          secretName: example-tls
If TLS is enabled for the Ingress, a Secret containing the certificate and key must also be provided:
  apiVersion: v1
  kind: Secret
  metadata:
    name: example-tls
    namespace: foo
  data:
    tls.crt: <base64 encoded cert>
    tls.key: <base64 encoded key>
  type: kubernetes.io/tls

稍等pod启动片刻后,可以看到如下输出表示部署成功(这里的ingress的service固定端口了,是32080和32443,如有被占用,请释放这两个端口):

[root@k8s-master ~]# k get po,svc -n ingress
NAME                                                        READY   STATUS    RESTARTS   AGE
pod/ingress-ingress-nginx-controller-87sh8                  1/1     Running   0          2m33s
pod/ingress-ingress-nginx-controller-bfbzj                  1/1     Running   0          2m33s
pod/ingress-ingress-nginx-controller-c8xbn                  1/1     Running   0          2m33s
pod/ingress-ingress-nginx-defaultbackend-7db4678cf7-zzjnd   1/1     Running   0          2m33s
NAME                                                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
service/ingress-ingress-nginx-controller             NodePort    10.0.154.40    <none>        80:32080/TCP,443:32443/TCP   2m33s
service/ingress-ingress-nginx-controller-admission   ClusterIP   10.0.124.47    <none>        443/TCP                      2m33s
service/ingress-ingress-nginx-defaultbackend         ClusterIP   10.0.190.225   <none>        80/TCP                       2m33s

卸载命令(如果pod有问题,启动有毛病,需要回退的话):

helm uninstall ingress -n ingress
[root@k8s-master ~]# helm uninstall ingress -n ingress
release "ingress" uninstalled

 




测试ingress的功能:

部署两个测试用pod:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: dev
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1
        ports:
        - containerPort: 80
      nodeName: k8s-node1
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-deployment
  namespace: dev
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tomcat-pod
  template:
    metadata:
      labels:
        app: tomcat-pod
    spec:
      containers:
      - name: tomcat
        image: tomcat:8.5-jre10-slim
        ports:
        - containerPort: 8080
      nodeName: k8s-node2

发布服务:

vim tomcat-nginx-svc.yaml

---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: dev
spec:
  ports:
    - port: 80
      name: nginx
  clusterIP: None
  selector:
    app: nginx-pod
---
apiVersion: v1
kind: Service
metadata:
  name: tomcat-service
  namespace: dev
spec:
  selector:
    app: tomcat-pod
  type: ClusterIP
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080

建立ingress清单文件:

vim ingress-http.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-http
  namespace: dev
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: nginx
#    nginx.ingress.kubernetes.io/backend-protocol: HTTPS
#    nginx.ingress.kubernetes.io/ssl-redirect: 'true'
#    nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
  rules:
  - host: nginx.test.com
    http:
      paths:
      - path: /
        backend:
          serviceName: nginx-service
          servicePort: 80
  - host: tomcat.test.com
    http:
      paths:
      - path: /
        backend:
          serviceName: tomcat-service
          servicePort: 80

打开浏览器,(node节点ip和上面的两个域名要做hosts解析,过于简单就不解释如何hosts了)输入上面定义的域名+32080端口:

 

那么,OK了,helm3部署ingress-nginx就圆满完成了。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
5月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
2298 4
|
5月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
277 5
|
应用服务中间件 PHP nginx
今日小结通过aliyun的本地容器镜像部署我的nginx和php环境
简介: 本教程介绍如何基于 Dragonwell 的 Ubuntu 镜像创建一个运行 Nginx 的 Docker 容器。首先从阿里云容器镜像服务拉取基础镜像,然后编写 Dockerfile 确保 Nginx 作为主进程运行,并暴露 80 端口。最后,在包含 Dockerfile 的目录下构建自定义镜像并启动容器,确保 Nginx 在前台运行,避免容器启动后立即退出。通过 `docker build` 和 `docker run` 命令完成整个流程。
492 25
今日小结通过aliyun的本地容器镜像部署我的nginx和php环境
|
7月前
|
运维 Dubbo Cloud Native
Dubbo 云原生重构出击:更快部署、更强控制台、更智能运维
Apache Dubbo 最新升级支持云原生,提供一键部署微服务集群与全新可视化控制台,提升全生命周期管理体验,助力企业高效构建云原生应用。
788 25
|
10月前
|
应用服务中间件 Linux 网络安全
技术指南:如何把docsify项目部署到基于CentOS系统的Nginx中。
总结 与其他部署方法相比,将docsify项目部署到基于CentOS系统的Nginx中比较简单。以上步骤应当帮助你在不花费太多时间的情况下,将你的项目顺利部署到Nginx中。迈出第一步,开始部署你的docsify项目吧!
411 14
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
ACK One注册集群已正式支持ACS(容器计算服务)算力,为企业的容器化工作负载提供更多选择和更强大的计算能力。
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
404 10
|
Cloud Native 安全 Serverless
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
648 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建

推荐镜像

更多