1:环境
Kubernetes |
1.24 |
Ingress-nginx |
1.2 |
2:拉取原始yaml文件并修改
[root@kubernetes-master-1 ~]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/baremetal/deploy.yaml
# 修改三点即可
1:修改Deployment为 DaemonSet
2:如果有replicas就删除
3:在Deployment资源下的containers上方添加 hostNetwork: true
spec:
hostNetwork: true
nodeSelector:
kubernetes.io/os: linux
containers:
- args:
- /nginx-ingress-controller
4:使用nodeselector选择部署在哪儿(我这里选择部署在node节点上)
# 这样就可以直接部署了
[root@kubernetes-master-1 ~]# kubectl apply -f deploy.yaml
namespace/ingress-nginx created
serviceaccount/ingress-nginx created
serviceaccount/ingress-nginx-admission created
role.rbac.authorization.k8s.io/ingress-nginx created
role.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrole.rbac.authorization.k8s.io/ingress-nginx unchanged
clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission unchanged
rolebinding.rbac.authorization.k8s.io/ingress-nginx created
rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx unchanged
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission unchanged
configmap/ingress-nginx-controller created
service/ingress-nginx-controller-admission created
deployment.apps/ingress-nginx-controller created
job.batch/ingress-nginx-admission-create created
job.batch/ingress-nginx-admission-patch created
ingressclass.networking.k8s.io/nginx unchanged
validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission configured
[root@kubernetes-master-1 ~]# kubectl get pod,svc -n ingress-nginx
NAME READY STATUS RESTARTS AGE
pod/ingress-nginx-admission-create-tb9g8 0/1 Completed 0 70s
pod/ingress-nginx-admission-patch-ppvvg 0/1 Completed 1 70s
pod/ingress-nginx-controller-5847985c57-nrpjp 1/1 Running 0 70s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/ingress-nginx-controller-admission ClusterIP 200.1.9.65 <none> 443/TCP 70s
# 我这里忘了改了Deployment所以只有一个哈
# 我们来看看被调度的节点是否占用了80和443
[root@kubernetes-worker-1 ~]# netstat -nplt | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 42599/nginx: master
tcp6 0 0 :::80 :::* LISTEN 42599/nginx: master
[root@kubernetes-worker-1 ~]# netstat -nplt | grep 443
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 42599/nginx: master
tcp6 0 0 :::8443 :::* LISTEN 42513/nginx-ingress
tcp6 0 0 :::443 :::* LISTEN 42599/nginx: master
3:测试服务
[root@kubernetes-master-1 nginx]# cat nginx-deploy.yaml
apiVersion: v1
kind: Namespace
metadata:
name: nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
namespace: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
imagePullSecrets:
- name: harbor
containers:
- name: nginx
image: registry.kubernetes-devops.cn/library/nginx:alpine
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: nginx
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 80
selector:
app: nginx
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx
namespace: nginx
spec:
ingressClassName: nginx
rules:
- host: nginx.kubernetes-devops.cn
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx
port:
number: 80
# 部署
[root@kubernetes-master-1 nginx]# kubectl get pod,svc,ingress -n nginx
NAME READY STATUS RESTARTS AGE
pod/nginx-5847785bf7-rpxnk 1/1 Running 0 37s
pod/nginx-5847785bf7-wmlsn 1/1 Running 0 37s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/nginx ClusterIP 200.1.228.208 <none> 80/TCP 37s
NAME CLASS HOSTS ADDRESS PORTS AGE
ingress.networking.k8s.io/nginx nginx nginx.kubernetes-devops.cn 10.0.0.11 80 37s
# 这里我在宿主机解析一下对应关系测试访问一下"nginx.kubernetes-devops.cn"