k8s 安装ingress nginx controller 并部署.net core ingress服务
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:
(下载不了,可能需要KX上网或绑定hosts)
复制一份,命名为“deploy-v1.1.0.yaml”,
并修改“deploy-v1.1.0.yaml”,
搜索Deployment (dnsPolicy)并修改,带“#”号的是修改点,
- dnsPolicy换成ClusterFirstWithHostNet
- 新加 hostNetwork: true
- 新加 nodeName: k8snode1 ,指定部署到k8snode1
- 新加
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
浏览器访问:
k8s 安装ingress nginx controller 并部署.net core ingress服务的更多相关文章
- K8s安装乐维5.0应用部署文档
乐维产品包具体打包为4个镜像包,分别为:mysql5.7.36.tar.zabbix_server.tar.itops_v1_4_x86_64.tar.bpm0.1.tar,对应的配置文件分别为:da ...
- centOS7下 安装nodejs+nginx+mongodb+pm2部署vue项目
一.购买服务器并远程连接 1.购买服务器和域名 可以选择阿里云或者是其他的厂商的服务器.然后会获得服务器ip地址,用户名和密码. 购买域名,将域名绑定到ip地址上. 2.下载xshell,winscp ...
- k8s安装之nginx.yaml
这里两个nginx.一个是用来测试最简单的集群的. 另一个是用来作grafana,prometheus,dashboard前端安全展示的. 简单版 apiVersion: apps/v1 kind: ...
- Linux上安装Docker,并成功部署NET Core 2.0
概述 容器,顾名思义是用来存放并容纳东西的器皿: 而容器技术伴着Docker的兴起也渐渐的映入大家的眼帘,它是一个抽象的概念,同时也是默默存在世上多年的技术,不仅能使应用程序间完全的隔离,而且还能在共 ...
- 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 ...
- 云原生之旅 - 8)云原生时代的网关 Ingress Nginx
前言 当我们在Kubernetes部署的服务需要暴露给外部用户使用时,有三种选择:LoadBalancer,NodePort, Ingress. LoadBalancer类型得结合各个Cloud Pr ...
- 调试 Ingress Nginx
由于 Ingress Nginx 是最受欢迎的 Ingress 控制器,因此接下来我们将介绍一些有关调试 ingress-nginx 的技巧. 调试 Ingress Nginx Ingress-ngi ...
- Linux服务器部署.Net Core笔记:目录
目录 Linux服务器部署.Net Core笔记:一.开启ssh服务 Linux服务器部署.Net Core笔记:二.安装FTP Linux服务器部署.Net Core笔记:三.安装.NetC ...
- 基于k8s集群部署prometheus监控ingress nginx
目录 基于k8s集群部署prometheus监控ingress nginx 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署pro ...
- 【k8s部署kong一】kong k8s 安装 以及可视化管理界面
官方安装:https://getkong.org/install/kubernetes/ 扩展讲解:https://blog.fleeto.us/post/intro-kong/ 提示:本文是在k8s ...
随机推荐
- 力扣48(java)-旋转图像(中等)
题目: 给定一个 n × n 的二维矩阵 matrix 表示一个图像.请你将图像顺时针旋转 90 度. 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要 使用另一个矩阵来旋转图像 ...
- 跨全端SDK技术演进
简介: 细想,团队进行跨平台开发已有三年有余,也是集团里面C++方向里比较早涉及该领域的部门之一,伴随业界跨平台技术发展与演进,我们也沉淀了一整套基于C++的跨平台技术体系,本文将以消息SDK为例,详 ...
- 一个好的网站logo设计长这样
简介:一个好的网站logo,不仅让用户一眼知道网站品牌传递的信息,还能提高网站专业度和丰富度,增加SEO搜索排名.今天分享下如何设计一款实用的网站logo.阿里云智能logo设计,在线免费体验log ...
- Flink 和 Pulsar 的批流融合
简介: 如何通过 Apache Pulsar 原生的存储计算分离的架构提供批流融合的基础,以及 Apache Pulsar 如何与 Flink 结合,实现批流一体的计算. 简介:StreamNativ ...
- 使用 Arthas 排查开源 Excel 组件问题
简介: 有了实际的使用之后,不免会想到,Arthas 是如何做到在程序运行时,动态监测我们的代码的呢?带着这样的问题,我们一起来看下 Java Agent 技术实现原理. 背景介绍 项目中有使 ...
- MaxCompute非事务表如何更新数据
简介: 本文主要讲解如何通过insert overwrite更新数据 背景 对于大数据中的大多数存储格式,支持随机更新非常复杂.它需要扫描大型文件,MaxCompute推出了最新的功能Transact ...
- three.js实现相机碰撞,相机不穿墙壁、物体
大家好,本文实现了相机碰撞检测,使相机不穿墙壁.物体,并给出了思路和代码,感谢大家~ 关键词:数字孪生.three.js.Web3D.WebGL.相机碰撞.游戏相机 我正在承接Web3D数字孪生项目, ...
- kubernetes-1.26安装
一.环境准备 k8s集群角色 IP 主机名 安装组件 配置 控制节点 192.168.10.10 master apiserver.controller-manager.scheduler.etcd. ...
- 06. C语言指针
[指针] C语言使用数据名调用数据,数据名相当于C语言的直接寻址,直接寻址只能调用固定数据,而指针是间接寻址,指针存储了另一个数据的地址,使用指针调用数据时首先取指针存储的内存地址,之后使用此地址调用 ...
- 虚拟机中安装mysql 完整教程( CentOS7 版本)
一.检查是否安装了Mysql Yum检查 yum list installed | grep mysql 安装则直接删除 yum remove mysql-community-client.x86_6 ...