k8s安裝ingress


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/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM