# kubectl get pod -n kube-system
# kubectl logs kube-proxy-2hktj -n kube-system
Using iptables Proxier
# kubectl edit configmap -n kube-system kube-proxy
configmap/kube-proxy edited
ipvs:
strictARP: true
mode: "ipvs"
# kubectl get pod -n kube-system -o wide
删除旧的pod之后 会新起一个新的pod
# kubectl delete pod kube-proxy-qwbg6 -n kube-system
删除pod一直处于terminating状态
# kubectl delete pods kube-proxy-bs858 --grace-period=0 --force -n kube-system
# kubectl get pod -n kube-system
# kubectl logs kube-proxy-4948r -n kube-system
Using ipvs Proxier
# ipvsadm -L -n
ingress-controller
# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml
# cat mandatory.yaml | grep image
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0
# docker pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0
# sed -i "s#rbac.authorization.k8s.io/v1beta1#rbac.authorization.k8s.io/v1#g" mandatory.yaml
# kubectl label nodes node1 ingress-controller=true
# kubectl label nodes node2 ingress-controller=true
# kubectl get node --show-labels
#修改mandatory.yaml文件(215行左右)使用宿主机网络:hostNetwork: true、文件中的kind 类型由Deployent改为DaemonSet,然后去掉replicas
215 serviceAccountName: nginx-ingress-serviceaccount
hostNetwork: true #添加这行
216 nodeSelector:
ingress-controller: 'true'
# kubectl apply -f mandatory.yaml
# kubectl get pod -n ingress-nginx
# kubectl get pod -o wide -n ingress-nginx
[root@node1 ~]# netstat -lntup | grep nginx
[root@node2 ~]# netstat -lntup | grep nginx
# kubectl describe pod -n ingress-nginx
部署ingress-nginx成功
# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml
# kubectl apply -f service-nodeport.yaml
# kubectl get svc -n ingress-nginx
# curl 10.2.17.249
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.17.8</center>
</body>
</html>
curl到的结果是404,就完成ingress-nginx部署
# curl 192.168.1.201:30080
# curl 192.168.1.202:30080
# curl 192.168.1.203:30080
# cat << EOF > nginx-ClusterIP-Service.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.9.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: ClusterIP
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
EOF
# kubectl apply -f nginx-ClusterIP-Service.yaml
# kubectl get pod
# kubectl get svc
# kubectl get pod
修改nginx01
# kubectl exec -it nginx01-7d4d7f956f-mhg77 -- bash
# cat << EOF > /usr/share/nginx/html/index.html
<head>
<title>Welcome to nginx 01!</title>
</head>
<body>
<h1>Welcome to nginx01!</h1>
</body>
EOF
按exit退出容器
修改nginx02
# kubectl exec -it nginx02-85d87d44c9-hzcjz -- bash
# cat << EOF > /usr/share/nginx/html/index.html
<head>
<title>Welcome to nginx 02!</title>
</head>
<body>
<h1>Welcome to nginx02!</h>
</body>
EOF
按exit退出容器
# cat << EOF > ingress_nginx-ClusterIP-Service.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-service-ingress
namespace: default
annotations:
kubernets.io/ingress.class: "nginx"
spec:
rules:
- host: lnmp.ltd
http:
paths:
- path:
backend:
serviceName: nginx-service
servicePort: 80
EOF
# kubectl apply -f ingress_nginx-ClusterIP-Service.yaml
# kubectl get ingress
# kubectl describe ingress 发现错误
原因分析:通过命令检查是否在命名空间 kube-system 有 default-back-end 服务:发现默认后端服务 (default back end)没有找到
# kubectl get service -n kube-system
使用下面的 yaml 文件创建 default-back-end 服务:
# cat << EOF > kube-backend.yaml
apiVersion: v1
kind: Service
metadata:
name: default-http-backend
namespace: kube-system
spec:
selector:
app: ingress-nginx-controller
ports:
- protocol: TCP
port: 80
targetPort: 80
EOF
# kubectl apply -f kube-backend.yaml
# kubectl get service -n kube-system
# kubectl describe ingress
问题解决
vim /etc/hosts
#任意node_ip
192.168.100.112 lnmp.ltd
windows添加C:\Windows\System32\drivers\etc\hosts
192.168.1.201 lnmp.ltd
1、nginx-ingress-controller
# kubectl get pod -o wide -n ingress-nginx
# kubectl describe pod -n ingress-nginx
2、service-nodeport
# kubectl get svc -n ingress-nginx
3、发布服务
# kubectl get pod
# kubectl get svc
4、用ingress转发
# kubectl get ingress
# kubectl describe ingress