使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- Ingress-Ngnix

使用,kubeadm,部署,kubernetes,k8s,安装,ingress,ngnix · 浏览次数 : 275

小编点评

** Kubernetes Ingress Controller 安装和配置** **准备步骤:** 1. 安装 Kubernetes 服务器。 2. 使用 kubeadm 安装 K8S 管理器。 3. 创建一个服务,映射到一个端口。 4. 创建一个 Ingress 规则,匹配域名并转发请求到服务。 **创建 Ingress 规则:** ```yaml apiVersion: networking.k8s.io/v1beta1 kind: Ingressmetadata name: example-ingressspec rules: - host: example.ingressdemo.com http: paths: - path: / backend: serviceName: web servicePort: 80 ``` **创建 Ingress 控制器:** ```yaml apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: ingress-nginx spec: selector: matchLabels: app: nginx-ingress-controller rules: - host: example.ingressdemo.com http: paths: - path: / backend: serviceName: web servicePort: 80 ingressClassName: default ``` **启动 Ingress 控制器:** ```bash kubectl apply -f ingress-nginx.yaml ``` **查看状态:** ```bash kubectl get pods -n ingress-nginx -o wideNAME kubectl get pods -n ingress-nginx -o wide ``` **总结:** 1. 创建 Ingress 规则,匹配域名 `example.ingressdemo.com` 并转发请求到服务 `web`。 2. 创建 Ingress 控制器,并将其配置为 `nginx-ingress-controller`。 3. 启动 Ingress 控制器。 4. 使用 `kubectl get pods -n ingress-nginx -o wide` 命令查看 Ingress 规则的生效结果。

正文

前置条件:使用 Kubeadm 部署 Kubernetes(K8S) 安装

安装ingress-nginx组件(在master节点执行)

  • 通过 ip+port 号进行访问,使用 Service 里的 NodePort 实现,把端口对外暴露
    缺陷:一个端口只能使用一次,一个端口对应一个应用,实际使用中都是用域名,根据不同的域名跳转到不同的端口服务中
  • Ingress 作为统一入口,不同的域名 关联 Service ,由 Service 关联一组 Pod 实现负载均衡
    image

创建 nginx 应用

# 创建 nginx 应用,对外暴露端口使用 NodePort
[root@k8smaster ~]# kubectl create deployment nginx --image=nginx
# 对外暴露 80 端口
[root@k8smaster ~]# kubectl expose deployment nginx --port=80 --type=NodePort
NAME                            READY   STATUS    RESTARTS   AGE
pod/javademo1-d7856c75c-czv2g   1/1     Running   0          152m
pod/javademo1-d7856c75c-n28rs   1/1     Running   0          151m
pod/javademo1-d7856c75c-xzqjc   1/1     Running   0          151m
pod/nginx-f89759699-5hkdw       1/1     Running   0          26d

NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
service/javademo1    NodePort    10.106.43.46   <none>        8111:31452/TCP   20d
service/kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP          26d
service/nginx        NodePort    10.103.87.81   <none>        80:30339/TCP     26d

访问地址:http://NodeIP:Port
image

部署 Ingress Controller

https://github.com/kubernetes/ingress-nginx/blob/nginx-0.30.0/deploy/static/
image

hostNetwork:true 新版的没有这个属性,后面再看
image

[root@k8smaster ~]# kubectl apply -f ingress-nginx.yaml
namespace/ingress-nginx created
configmap/nginx-configuration created
configmap/tcp-services created
configmap/udp-services created
serviceaccount/nginx-ingress-serviceaccount created
clusterrole.rbac.authorization.k8s.io/nginx-ingress-clusterrole created
role.rbac.authorization.k8s.io/nginx-ingress-role created
rolebinding.rbac.authorization.k8s.io/nginx-ingress-role-nisa-binding created
clusterrolebinding.rbac.authorization.k8s.io/nginx-ingress-clusterrole-nisa-binding created
deployment.apps/nginx-ingress-controller created
limitrange/ingress-nginx created
service/ingress-nginx created
#查看 ingress-nginx 的状态(yaml 中 namespace: ingress-nginx)
[root@k8smaster ~]# kubectl get pods -n ingress-nginx
NAME                                        READY   STATUS    RESTARTS   AGE
nginx-ingress-controller-5cb8688798-gspq4   1/1     Running   0          64m
[root@k8smaster ~]# 

创建 Ingress 规则

ingress-demo.yaml

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: example-ingress
spec:
  rules:
  - host: example.ingressdemo.com
    http:
      paths:
      - path: /
        backend:
          serviceName: web
          servicePort: 80
[root@k8smaster ~]# cat ./ingress-demo.yaml 
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: example-ingress
spec:
  rules:
  - host: example.ingressdemo.com
    http:
      paths:
      - path: /
        backend:
          serviceName: web
          servicePort: 80
[root@k8smaster ~]# kubectl apply -f ingress-demo.yaml 
ingress.networking.k8s.io/example-ingress created
[root@k8smaster ~]# kubectl get pods -n ingress-nginx -o wide
NAME                                        READY   STATUS    RESTARTS   AGE   IP            NODE       NOMINATED NODE   READINESS GATES
nginx-ingress-controller-5cb8688798-gspq4   1/1     Running   0          18h   10.244.2.39   k8snode2   <none>           <none>

修改Host文件

C:\Windows\System32\drivers\etc hosts 文件
image

10.244.2.39   example.ingressdemo.com

ip地址,对应 kubectl get pods -n ingress-nginx -o wide 命令中的 IP

与使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- Ingress-Ngnix相似的内容:

使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- Ingress-Ngnix

前置条件:使用 Kubeadm 部署 Kubernetes(K8S) 安装 安装ingress-nginx组件(在master节点执行) 通过 ip+port 号进行访问,使用 Service 里的 NodePort 实现,把端口对外暴露 缺陷:一个端口只能使用一次,一个端口对应一个应用,实际使用中

使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(PV&PVC)

使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- Ingress-Ngnix 使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(NFS网络存储) NFS 存在一个弊端,需要知道NFS服务器的地址,配在 yaml 中 PV:持久化存储,对存储资源

使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(NFS网络存储)

使用 Kubeadm 部署 Kubernetes(K8S) 安装 使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- Ingress-Ngnix Volume 是 Pod 中能够被多个容器访问的共享目录。 Kubernetes 的 Volume 定义在 Pod 上,它被一个 Po

Kubernetes(K8S) kubesphere 介绍

使用 Kubeadm 部署 Kubernetes(K8S) 安装--附K8S架构图 Kubernetes(K8S) kubesphere 安装 官网地址:https://kubesphere.com.cn/ KubeSphere 是个全栈的Kubernetes容器云PaaS解决方案 KubeSphe

[转帖]555. 【kubernetes】kubeadm 集群升级

https://www.jianshu.com/p/e8abd105caa9 三年前刚刚接触 kubernetes 不久,搭建的线上交易会平台装的 kubernetes 集群使用的是 kubeadm。每年都会做一次集群升级、刷新许可证,今天再做一次升级。 官方参考链接:升级 kubeadm 集群 一

使用Cloudflare Worker加速docker镜像

前言 开发者越来越难了,现在国内的docker镜像也都️了,没有镜像要使用docker太难了,代理又很慢 现在就只剩下自建镜像的办法了 GitHub上有开源项目可以快速搭建自己的镜像库,不过还是有点麻烦,还好Cloudflare暂时还活着‍ 本文记录一下使用 Cloudf

使用C#/.NET解析Wiki百科数据实现获取历史上的今天

创建一个webapi项目做测试使用。 创建新控制器,搭建一个基础框架,包括获取当天日期、wiki的请求地址等 创建一个Http请求帮助类以及方法,用于获取指定URL的信息 使用http请求访问指定url,先运行一下,看看返回的内容。内容如图右边所示,实际上是一个Json数据。我们主要解析 大事记 部

Pybind11和CMake构建python扩展模块环境搭建

使用pybind11的CMake模板来创建拓展环境搭建 从Github上下载cmake_example的模板,切换分支,并升级pybind11子模块到最新版本 拉取pybind11使用cmake构建工具的模板仓库 git clone --recursive https://github.com/mr

说说RabbitMQ延迟队列实现原理?

使用 RabbitMQ 和 RocketMQ 的人是幸运的,因为这两个 MQ 自身提供了延迟队列的实现,不像用 Kafka 的同学那么苦逼,还要自己实现延迟队列。当然,这都是题外话,今天咱们重点来聊聊 RabbitMQ 延迟队列的实现原理,以及 RabbitMQ 实现延迟队列的优缺点有哪些? 很多人

使用FModel提取游戏资产

目录前言FModel简介FModel安装FModel使用初次使用资产预览资产导出附录dumperDumper-7生成usmap文件向游戏中注入dll 前言 这篇文章仅记录我作为初学者使用FModel工具提取某款游戏模型的过程。 FModel简介 FModel是一个开源软件,可以用于查看和提取UE4-