1. 環境准備
安裝nginx-ingress-controller和backend
cd /etc/yum.repos.d/mainfests
下載鏡像的腳本 vi ingressnginx.sh
#!/bin/bash images=( nginx-ingress-controller:0.9.0-beta.10 defaultbackend:1.4) for imageName in ${images[@]} ; do docker pull docker.io/chenliujin/$imageName docker tag docker.io/chenliujin/$imageName gcr.io/google_containers/$imageName docker rmi docker.io/chenliujin/$imageName done
為了防止在執行 default-backend.yaml發現意外錯誤,在所有節點執行以下操作
docker pull docker.io/chenliujin/defaultbackend:1.4 docker tag docker.io/chenliujin/defaultbackend:1.4 gcr.io/google_containers/defaultbackend:1.4 docker rmi docker.io/chenliujin/defaultbackend:1.4
2. 下載必需的yaml文件並執行
cd /home/k8s/ingressimage
編寫下載yaml的腳本 vi downimages.sh
for file in namespace.yaml configmap.yaml rbac.yaml tcp-services-configmap.yaml with-rbac.yaml udp-services-configmap.yaml default-backend.yaml;
do wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.17.0/deploy/$file; done
kubectl apply -f namespace.yaml
kubectl get ns
kubectl apply -f ./
kubectl get pods -n ingress-nginx --show-labels
3. 編寫測試文件
cd /home/k8s/ingress vi deploy-demo.yaml
apiVersion: v1 kind: Service metadata: name: myapp namespace: default spec: selector: app: myapp release: canary ports: - name: http targetPort: 80 port: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: myapp-deploy namespace: default spec: replicas: 3 selector: matchLabels: release: canary template: metadata: labels: app: myapp release: canary spec: containers: - name: myapp image: ikubernetes/myapp:v2 ports: - name: http containerPort: 80
kubectl apply -f deploy-demo.yaml
kubectl get svc
kubectl get pods
cd /home/k8s/ingresstest
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.17.0/deploy/provider/baremetal/service-nodeport.yaml
修改其中的內容為
apiVersion: v1 kind: Service metadata: name: ingress-nginx namespace: ingress-nginx spec: type: NodePort ports: - name: http port: 80 targetPort: 80 protocol: TCP nodePort: 30080 - name: https port: 443 targetPort: 443 protocol: TCP nodePort: 30443 selector: app: ingress-nginx
kubectl apply -f service-nodeport.yaml
最后訪問在瀏覽器訪問:http://47.102.46.176:30080/ 如果出現 default backend - 404 表示成功
4. 通過修改域名訪問
vi ingress-myapp.yaml # 內容是 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-myapp namespace: default annotations: kubernetes.io/ingress.class: "nginx" spec: rules: - host: myapp.klvchen.com http: paths: - path: backend: serviceName: myapp servicePort: 80 # 創建 ingress kubectl apply -f ingress-myapp.yaml # 查看 ingress kubectl get ingress # 查詳細信息 ingress kubectl describe ingress ingress-myapp # 通過修改 host 可以通過域名訪問,修改 hosts 文件,添加下面記錄 192.168.0.205 myapp.klvchen.com # 訪問 http://myapp.klvchen.com:30080/