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. 力扣48(java)-旋转图像(中等)

    题目: 给定一个 n × n 的二维矩阵 matrix 表示一个图像.请你将图像顺时针旋转 90 度. 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要 使用另一个矩阵来旋转图像 ...

  2. 跨全端SDK技术演进

    简介: 细想,团队进行跨平台开发已有三年有余,也是集团里面C++方向里比较早涉及该领域的部门之一,伴随业界跨平台技术发展与演进,我们也沉淀了一整套基于C++的跨平台技术体系,本文将以消息SDK为例,详 ...

  3. 一个好的网站logo设计长这样

    ​简介:一个好的网站logo,不仅让用户一眼知道网站品牌传递的信息,还能提高网站专业度和丰富度,增加SEO搜索排名.今天分享下如何设计一款实用的网站logo.阿里云智能logo设计,在线免费体验log ...

  4. Flink 和 Pulsar 的批流融合

    简介: 如何通过 Apache Pulsar 原生的存储计算分离的架构提供批流融合的基础,以及 Apache Pulsar 如何与 Flink 结合,实现批流一体的计算. 简介:StreamNativ ...

  5. 使用 Arthas 排查开源 Excel 组件问题

    简介: 有了实际的使用之后,不免会想到,Arthas 是如何做到在程序运行时,动态监测我们的代码的呢?带着这样的问题,我们一起来看下 Java Agent 技术实现原理. ​ 背景介绍 ​ 项目中有使 ...

  6. MaxCompute非事务表如何更新数据

    简介: 本文主要讲解如何通过insert overwrite更新数据 背景 对于大数据中的大多数存储格式,支持随机更新非常复杂.它需要扫描大型文件,MaxCompute推出了最新的功能Transact ...

  7. three.js实现相机碰撞,相机不穿墙壁、物体

    大家好,本文实现了相机碰撞检测,使相机不穿墙壁.物体,并给出了思路和代码,感谢大家~ 关键词:数字孪生.three.js.Web3D.WebGL.相机碰撞.游戏相机 我正在承接Web3D数字孪生项目, ...

  8. kubernetes-1.26安装

    一.环境准备 k8s集群角色 IP 主机名 安装组件 配置 控制节点 192.168.10.10 master apiserver.controller-manager.scheduler.etcd. ...

  9. 06. C语言指针

    [指针] C语言使用数据名调用数据,数据名相当于C语言的直接寻址,直接寻址只能调用固定数据,而指针是间接寻址,指针存储了另一个数据的地址,使用指针调用数据时首先取指针存储的内存地址,之后使用此地址调用 ...

  10. 虚拟机中安装mysql 完整教程( CentOS7 版本)

    一.检查是否安装了Mysql Yum检查 yum list installed | grep mysql 安装则直接删除 yum remove mysql-community-client.x86_6 ...