k8s 安装ingress nginx controller 并部署.net core ingress服务

本地k8s集群概览

192.168.28.132 k8smaster
192.168.28.133 k8snode1
192.168.28.134 k8snode2
192.168.28.135 k8snode3
192.168.28.131 www.img.com

www.img.com 是harbor 镜像仓库

k8s (kubectl version)版本是 1.23

准备安装ingress-nginx/controller-v1.1.0

参考:https://blog.csdn.net/qq_41586875/article/details/120896074,

参考(v1.0.0 的安装和使用):https://www.cnblogs.com/cnsre/p/15218379.html

一、修改apiserver 启动参数

vi /etc/kubernetes/manifests/kube-apiserver.yaml

在“enable-admission-plugins=NodeRestriction”后面添加 “,MutatingAdmissionWebhook,ValidatingAdmissionWebhook” 参数

--enable-admission-plugins=NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook

二、下载ingress-nginx controller:

https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/cloud/deploy.yaml

(下载不了,可能需要KX上网或绑定hosts)

复制一份,命名为“deploy-v1.1.0.yaml”,

并修改“deploy-v1.1.0.yaml”,

搜索Deployment (dnsPolicy)并修改,带“#”号的是修改点,

  1. dnsPolicy换成ClusterFirstWithHostNet
  2. 新加 hostNetwork: true
  3. 新加 nodeName: k8snode1 ,指定部署到k8snode1
  4. 新加
tolerations:
- key: node-role.kubernetes.io/master
operator: Exists

“deploy-v1.1.0.yaml” - Deployment 局部修改示例:

  template:
metadata:
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/component: controller
spec:
dnsPolicy: ClusterFirstWithHostNet #既能使用宿主机DNS,又能使用集群DNS
hostNetwork: true #与宿主机共享网络
nodeName: k8snode1 #设置只能在k8snode1节点运行
tolerations: #设置能容忍master污点
- key: node-role.kubernetes.io/master
operator: Exists
containers:
- name: controller
image: k8s.gcr.io/ingress-nginx/controller:v1.1.0@sha256:f766669fdcf3dc26347ed273a55e754b427eb4411ee075a53f30718b4499076a
imagePullPolicy: IfNotPresent

三、安装ingress-nginx-controller:

kubectl apply -f deploy-v1.1.0.yaml

(镜像拉不下来时,可能需KX上网)

查看状态

kubectl get pods -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx -o wide

NAME                                        READY   STATUS      RESTARTS   AGE   IP               NODE       NOMINATED NODE   READINESS GATES
ingress-nginx-admission-create-rnfvr 0/1 Completed 0 98m 10.244.3.67 k8snode3 <none> <none>
ingress-nginx-admission-patch-mzsv2 0/1 Completed 0 98m 10.244.2.6 k8snode2 <none> <none>
ingress-nginx-controller-648c6ccb64-lnstv 1/1 Running 0 98m 192.168.28.133 k8snode1 <none> <none>

可以看到nginx-controller部署到了node1,内网IP是:192.168.28.133

如果一直是非“Running”,可以用下面的命令查看pod状态,然后百度解决

kubectl describe pod ingress-nginx-controller-648c6ccb64-lnstv --namespace=ingress-nginx

到node-1上看下本地端口:

netstat -lntup | grep nginx

tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      7385/nginx: worker
tcp 0 0 127.0.0.1:10245 0.0.0.0:* LISTEN 55267/nginx-ingress
tcp 0 0 127.0.0.1:10246 0.0.0.0:* LISTEN 7382/nginx: worker
tcp 0 0 127.0.0.1:10247 0.0.0.0:* LISTEN 7382/nginx: worker
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7385/nginx: worker
tcp 0 0 0.0.0.0:8181 0.0.0.0:* LISTEN 7385/nginx: worker
tcp6 0 0 :::8443 :::* LISTEN 55267/nginx-ingress
tcp6 0 0 :::443 :::* LISTEN 7382/nginx: worker
tcp6 0 0 :::10254 :::* LISTEN 55267/nginx-ingress
tcp6 0 0 :::80 :::* LISTEN 7382/nginx: worker
tcp6 0 0 :::8181 :::* LISTEN 7382/nginx: worker

四、创建 ingress 服务:

参考: https://blog.csdn.net/qq_16538827/article/details/120265570

用到的.net core mvc Dockerfile等

打包.net core mvc 镜像

Dockerfile:

#添加.net6基础镜像
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app # 一般情况下必须开放
EXPOSE 80
# 如果使用https,记得打开443端口,但是一般不用
#EXPOSE 443 #修改为上海时区
ENV TIME_ZONE Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime COPY publish/ /app
ENTRYPOINT ["dotnet", "net6mvc.dll"]

k8s 上部署 .net core mvc 服务

web-pod.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
name: net6mvc
labels:
k8s-app: net6mvc
spec:
replicas: 3
selector:
matchLabels:
k8s-app: net6mvc
template:
metadata:
labels:
k8s-app: net6mvc
spec:
containers:
- name: net6mvc
image: www.img.com/library/net6-mvc:1.0
imagePullPolicy: Always
ports:
- containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: net6mvc
name: net6mvc
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 32143
selector:
k8s-app: net6mvc

k8s 上部署 ingress 服务

ingress-net6mvc.yaml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-net6mvc
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: www.net6mvc.com
http:
paths:
- path: "/"
pathType: Prefix
backend:
service:
name: net6mvc
port:
number: 80

www.net6mvc.com 是随便起的域名。

docker build -t www.img.com/library/net6-mvc:1.0 .
docker push www.img.com/library/net6-mvc:1.0
docker rmi www.img.com/library/net6-mvc:1.0 kubectl apply -f web-pod.yaml kubectl apply -f ingress-net6mvc.yaml

查看ingress-nginx 的内网工作端口

kubectl get svc -n ingress-nginx

[root@k8smaster home]# kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.97.204.228 <pending> 80:32048/TCP,443:32094/TCP 115m
ingress-nginx-controller-admission ClusterIP 10.108.100.124 <none> 443/TCP 115m

可以看到nginx-controller http端口是:32048

C:\windows\system32\drivers\etc\,绑定hosts后,

192.168.28.133 www.net6mvc.com

浏览器访问:

http://www.net6mvc.com:32048/

k8s 安装ingress nginx controller 并部署.net core ingress服务的更多相关文章

  1. K8s安装乐维5.0应用部署文档

    乐维产品包具体打包为4个镜像包,分别为:mysql5.7.36.tar.zabbix_server.tar.itops_v1_4_x86_64.tar.bpm0.1.tar,对应的配置文件分别为:da ...

  2. centOS7下 安装nodejs+nginx+mongodb+pm2部署vue项目

    一.购买服务器并远程连接 1.购买服务器和域名 可以选择阿里云或者是其他的厂商的服务器.然后会获得服务器ip地址,用户名和密码. 购买域名,将域名绑定到ip地址上. 2.下载xshell,winscp ...

  3. k8s安装之nginx.yaml

    这里两个nginx.一个是用来测试最简单的集群的. 另一个是用来作grafana,prometheus,dashboard前端安全展示的. 简单版 apiVersion: apps/v1 kind: ...

  4. Linux上安装Docker,并成功部署NET Core 2.0

    概述 容器,顾名思义是用来存放并容纳东西的器皿: 而容器技术伴着Docker的兴起也渐渐的映入大家的眼帘,它是一个抽象的概念,同时也是默默存在世上多年的技术,不仅能使应用程序间完全的隔离,而且还能在共 ...

  5. Ubuntu-Docker[1]安装Docker,通过Docker部署net core代码,需要结合[.NET Core 18]发布、ASP.NET Core Docker部署

    1)通过系统自带包安装 通过自带包安装,可能Docker版本较旧 $ sudo apt-get update Reading package lists... Done $ sudo apt-get ...

  6. 云原生之旅 - 8)云原生时代的网关 Ingress Nginx

    前言 当我们在Kubernetes部署的服务需要暴露给外部用户使用时,有三种选择:LoadBalancer,NodePort, Ingress. LoadBalancer类型得结合各个Cloud Pr ...

  7. 调试 Ingress Nginx

    由于 Ingress Nginx 是最受欢迎的 Ingress 控制器,因此接下来我们将介绍一些有关调试 ingress-nginx 的技巧. 调试 Ingress Nginx Ingress-ngi ...

  8. Linux服务器部署.Net Core笔记:目录

        目录 Linux服务器部署.Net Core笔记:一.开启ssh服务 Linux服务器部署.Net Core笔记:二.安装FTP Linux服务器部署.Net Core笔记:三.安装.NetC ...

  9. 基于k8s集群部署prometheus监控ingress nginx

    目录 基于k8s集群部署prometheus监控ingress nginx 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署pro ...

  10. 【k8s部署kong一】kong k8s 安装 以及可视化管理界面

    官方安装:https://getkong.org/install/kubernetes/ 扩展讲解:https://blog.fleeto.us/post/intro-kong/ 提示:本文是在k8s ...

随机推荐

  1. 通过 MSE 实现基于Apache APISIX的全链路灰度

    简介: 无论是微服务网关还是微服务本身都需要识别流量,根据治理规则做出动态决策.当服务版本发生变化时,这个调用链路的转发也会实时改变.相比于利用机器搭建的灰度环境,这种方案不仅可以节省大量的机器成本和 ...

  2. 龙蜥开源Plugsched:首次实现 Linux kernel 调度器热升级 | 龙蜥技术

    ​简介:对于plugsched而言,无论是 bugfix,还是性能优化,甚至是特性的增.删.改,都可胜任. ​ 文/龙蜥社区内核开发人员 陈善佩.吴一昊.邓二伟 Plugsched 是 Linux 内 ...

  3. 网易游戏基于 Flink 的流式 ETL 建设

    简介: 网易游戏流式 ETL 建设实践及调优经验分享- 网易游戏资深开发工程师林小铂为大家带来网易游戏基于 Flink 的流式 ETL 建设的介绍.内容包括: 专用 ETL EntryX 通用 ETL ...

  4. 阿里千万实例可观测采集器-iLogtail正式开源

    ​简介:11月23日,阿里正式开源可观测数据采集器iLogtail.作为阿里内部可观测数据采集的基础设施,iLogtail承载了阿里巴巴集团.蚂蚁的日志.监控.Trace.事件等多种可观测数据的采集工 ...

  5. 顺丰科技 Hudi on Flink 实时数仓实践

    ​简介: 介绍了顺丰科技数仓的架构,趟过的一些问题.使用 Hudi 来优化整个 job 状态的实践细节,以及未来的一些规划. 本文作者为刘杰,介绍了顺丰科技数仓的架构,趟过的一些问题.使用 Hudi ...

  6. 大模型 RAG 是什么

    大模型 RAG(Retrieval-Augmented Generation)是一种结合了检索(Retrieval)与生成(Generation)能力的先进人工智能技术,主要用于增强大型语言模型(LL ...

  7. [FAQ] Quasar 组件 q-select 如何触发 onChange 事件

    Quasar 文档都提供了组件的可用参数和事件.方法. qSelect(q-select) 并没有 @change 事件,需要使用 @update 事件,注意用法. <q-select v-mo ...

  8. [Gin] gin-jwt 业务逻辑中使用实例化的 middleware 的方式

    依然需要按文档所示实例化一个 authMiddleware. 在路由组中使用的方式是 authMiddleware.MiddlewareFunc(). 通过追踪 MiddlewareFunc 可以知道 ...

  9. 数据可视化之matplotlib模块

    一.简介 Matplotlib是一个强大的Python绘图和数据可视化的工具包.数据可视化也是我们数据分析的最重要的工作之一,可以帮助我们完成很多操作,例如:找出异常值.必要的一些数据转换等.完成数据 ...

  10. Oracle修改字段长度及属性

    首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247486117&idx=1 ...