一.ingress安装
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.2/deploy/static/provider/cloud/deploy.yaml
sed -i 's#registry.k8s.io/ingress-nginx/controller:v1.11.2@sha256:.*#registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.11.2#' deploy.yaml
sed -i 's#registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.3@sha256:.*#registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.4.3#' deploy.yaml
sed -i 's#registry.k8s.io/defaultbackend-amd64:.*#registry.cn-hangzhou.aliyuncs.com/google_containers/defaultbackend-amd64:1.5#' deploy.yaml
需要修改以下参数:
spec:
replicas: 1 # ingress节点数
template:
……
spec:
dnsPolicy: ClusterFirstWithHostNet # 配置DNS策略,实现pod可以访问集群内外的域名
hostNetwork: true # 新增。开启host网络,提高网络入口的网络性能
nodeSelector: # 设置node筛选器,在特定label的节点上启动
ingress: "true" # 修改。调度至IngressProxy: "true"的节点
# 修改service类型为nodeport
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
app.kubernetes.io/version: 1.13.1
name: ingress-nginx-controller
namespace: ingress-nginx
spec:
……
type: NodePort
运行结果
[root@k8s-master opt]# kubectl get po -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-admission-create-n8c9f 0/1 Completed 0 14h
ingress-nginx-admission-patch-fxm4k 0/1 Completed 0 14h
ingress-nginx-controller-bc596b7db-p4vqq 1/1 Running 0 111s
[root@k8s-master opt]# kubectl get service -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller NodePort 10.105.250.241 <none> 80:30464/TCP,443:30691/TCP 14h
ingress-nginx-controller-admission ClusterIP 10.106.31.45 <none> 443/TCP 14h
2 验证ingress
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.25.5
ports:
- containerPort: 80
name: http
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 100m
memory: 128Mi
---
apiVersion: v1
kind: Service
metadata:
name: myapp-svc
spec:
selector:
app: myapp
ports:
- port: 80
targetPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingreess
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: myapp.local.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapp-svc
port:
number: 80
kubectl apply -f nginx.yaml
修改hosts
x.x.x.x myapp.local.com
浏览器验证即可