k8s 安装 ingress

k8s 安装 ingress
这里我们使用yaml 安装ingress,首先从官网获取到 yaml 文件

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

这里不能直接使用此 yaml 文件进行部署,deploy.yaml 文件中涉及到两个镜像(下载不到)

image: registry.k8s.io/ingress-nginx/controller:v1.8.0

image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407

然后并没有找到 kube-webhook-certgen:v20230407 该版本的镜像

解决办法:把 yaml 文件中的 image 信息修改成以上的两个源如下

...
image: registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.8.2
...
image: docker.io/anjia0532/google-containers.ingress-nginx.kube-webhook-certgen:v1.1.1
...

在这里插入图片描述
在这里插入图片描述
然后执行部署命令

kubectl apply -f deploy.yaml

查看POD 状态
在这里插入图片描述
至此 Ingress 控制器安装完成

之后便可以创建 Ingress 资源了:

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata:  
  name: k8s-combat-ingress  
spec:  
  ingressClassName: nginx  
  rules:  
    - host: www.service1.io  
      http:  
        paths:  
          - backend:  
              service:  
                name: k8s-combat-service  
                port:  
                  number: 8081  
            path: /  
            pathType: Prefix  
    - host: www.service2.io  
      http:  
        paths:  
          - backend:  
              service:  
                name: k8s-combat-service-2  
                port:  
                  number: 8081  
            path: /  
            pathType: Prefix

对外暴露80端口

修改下载下来的deploy.yaml 还是 name: ingress-nginx-controller ,这一段。
增加 NodePort:80 和NodePort:443

如下:

apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
    app.kubernetes.io/version: 1.1.2
    helm.sh/chart: ingress-nginx-4.0.18
  name: ingress-nginx-controller
  namespace: ingress-nginx
spec:
  externalTrafficPolicy: Local
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - appProtocol: http
    name: http
    port: 80
    nodePort: 80
    protocol: TCP
    targetPort: http
  - appProtocol: https
    name: https
    port: 443
    nodePort: 443
    protocol: TCP
    targetPort: https
  selector:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/name: ingress-nginx
  type: NodePort

这样直接执行,会出现错误:nodePort: Invalid value valid ports is 30000-32767,
是因为k8s的node节点的端口默认被限制在30000-32767的范围,

先修改kube的默认配置:

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

在spec.containers.command的最后面加上 --service-cluster-ip-range 这一行,如下内容

- --service-node-port-range=1-65535

最后 重启 kubelet

systemctl daemon-reload
systemctl restart kubelet

然后再执行:

kubectl apply -f deploy.yaml

ingress-nginx 添加 https 证书
生成证书文件

openssl req -x509 -nodes -days 2920 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=shanghai/O=nginxsvc"

#req是证书请求的子命令-newkey rsa:2048 -keyout tls.key  -newkey是与-key互斥的,-newkey是指在生成证书请求或者自签名证书的时候自动生成密钥,-nodes 表示私钥不加密
#-out 指定生成的证书请求或者自签名证书名称-days 2920  证书有效期
#若执行自动输入,可使用-subj选项:-subj——证书相关的用户信息(subject的缩写)

导入证书文件到k8s secret 指定命名空间

kubectl create secret tls https-secret --key tls.key --cert tls.crt -n ${namespace}

实例

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: monitor
  namespace: dev-oms
spec:
  ingressClassName: nginx-ingress-congtoller
  rules:
    - host: test.jdd966.cn
      http:
        paths:
          - backend:
              service:
                name: jdd-monitor
                port:
                  number: 8085
            path: /
            pathType: Prefix
  tls:
    - hosts:
        - test.jdd966.cn
      secretName: https-secret

安装ingress ,参考文档:https://zhuanlan.zhihu.com/p/656385605
安装nginx ingress 无法下载镜像,参考文档:https://blog.csdn.net/omglolwtf/article/details/131214195
ingress 开放80端口,参考文档:https://blog.csdn.net/shelutai/article/details/123904190
添加https证书,参考文档:https://www.cnblogs.com/litter-rabbit/articles/15710593.html

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
k8s安装ingress可以通过以下步骤进行: 1. 首先,确保你的kubernetes集群已经部署好并且正常运行。 2. 接下来,选择一种支持ingressingress controller。常见的选择有Nginx Ingress Controller和Traefik Ingress Controller。你可以根据自己的需求选择合适的controller。 3. 安装ingress controller。可以通过使用Helm进行安装,以下是使用Helm安装Nginx Ingress Controller的示例命令: ```shell helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm install my-ingress-nginx ingress-nginx/ingress-nginx ``` 如果你选择安装Traefik Ingress Controller,可以参考官方文档获取安装命令。 4. 等待ingress controller部署完成,并且确保所有相关的Pod已经正常运行。你可以使用以下命令检查相关的Pod状态: ```shell kubectl get pods -n <namespace> ``` 5. 配置ingress资源。创建一个ingress资源文件,并按照你的需求配置相应的规则和后端服务。以下是一个示例的ingress资源文件: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress spec: rules: - http: paths: - path: /foo pathType: Prefix backend: service: name: foo-service port: number: 80 - path: /bar pathType: Prefix backend: service: name: bar-service port: number: 80 ``` 在这个示例中,我们定义了两个路径规则,分别映射到名为foo-service和bar-service的后端服务。 6. 应用ingress资源。使用kubectl命令将ingress资源文件应用到你的kubernetes集群中: ```shell kubectl apply -f <ingress-resource-file.yaml> ``` 确保ingress资源已经成功创建: ```shell kubectl get ingress ``` 你应该能够看到刚刚创建的ingress资源。 7. 配置DNS解析。根据你的集群环境,可能需要配置DNS解析将域名指向ingress controller的IP地址。 完成上述步骤后,你的kubernetes集群就已经配置好了ingress。你可以通过访问指定的域名和路径来访问后端服务。请根据自己的实际情况进行调整和配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值