1. 程式人生 > 實用技巧 >kubenetes install ingress-nginx

kubenetes install ingress-nginx

檢視kubectl services簡稱列表
kubectl api-resources
檢視ingress-nginx是否在安裝
$ kubectl get pods -n ingress-nginx
NAME                                       READY     STATUS    RESTARTS   AGE
ingress-nginx-controller-fdcdcd6dd-vvpgs   1/1       Running   0          11s
檢視資源建立檔案

$ kubectl describe pods ingress-nginx-controller-c96557986-q4f4z -n ingress-nginx

Name: ingress-nginx-controller-c96557986-q4f4z
Namespace: ingress-nginx
Priority: 0
Node: node2/192.168.147.130
Start Time: Sun, 26 Jul 2020 17:04:47 +0800
Labels: app.kubernetes.io/component=controller
app.kubernetes.io/instance=ingress-nginx
app.kubernetes.io/name=ingress-nginx

pod-template-hash=c96557986
Annotations: cni.projectcalico.org/podIP: 10.244.1.33/32
Status: Pending
IP: 10.244.1.33

刪除ingress-nginx相關物件

$ kubectl delete pod ingress-nginx-controller-c96557986-q4f4z -n ingress-nginx

pod "ingress-nginx-controller-c96557986-q4f4z" deleted

ingress-nginx 在kubernetes中實現了傳統nginx的url區分,同時又實現了動態更新配置的功能

可以到https://github.com/kubernetes/ingress-nginx/tree/nginx-0.20.0/deploy,下載相應的安裝包,使用kubectl apply -f 載入相關模組

for file in configmap.yaml namespace.yaml rbac.yaml with-rbac.yaml tcp-services-configmap.yaml default-backend.yaml  ; \
do wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/$file;done

 注意:

因為新版本的已經變更來位置,或者一些yaml包已經不存在,需要根據自己的需要挑選yaml檔案,可選的版本如下:

https://github.com/kubernetes/ingress-nginx/blob/nginx-0.25.1/deploy/static

https://github.com/kubernetes/ingress-nginx/blob/nginx-0.20.0/deploy/

https://github.com/kubernetes/ingress-nginx/blob/nginx-0.24.1/deploy/

如果實在沒辦法下載,就用笨辦法,一個一個的把內容拷貝下來

新版本對apiversion的支援有所變更,一些yaml檔案的apiVersion需要調整

如with-rabc.yaml default-backend.yaml 需要把extension/v1beta1,改成apps/v1

### 如果想使用最新的版本,則需要從官網下載最新版的安裝指令碼,最新版集合到了一個deploy.yaml檔案中

發現半天來還是沒成功,仔細檢視發現事國外的連線不上啊

[root@master mytest]# kubectl get pods -n ingress-nginx
NAME                                       READY   STATUS             RESTARTS   AGE
ingress-nginx-admission-create-8x67h       0/1     Completed          0          44m
ingress-nginx-controller-c96557986-j62fk   0/1     ImagePullBackOff   0          21m
nginx-ingress-controller-9c56c5c84-s9hsh   1/1     Running            0          70m  

解決辦法

修改mandatory.yaml配置檔案
1.搜尋 serviceAccountName,跳轉到此處
2.修改配置

sed -i 's#quay.io/kubernetes-ingress-controller/nginx-ingress-controller#registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller#g' deploy.yaml

準備相關安裝環境,先準備pod和service

apiVersion: v1
kind: Service
metadata:
  name: myapp
  namespace: default
spec:
  selector:
    app: myapp
    release: canary
  clusterIP: "None"
  ports:
  - name: http
    targetPort: 80
    port: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deploy
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
       app: myapp
       release: canary
  template:
     metadata:
       labels:
         app: myapp
         release: canary
     spec:
        containers:
        - name: myapp
          image: tomcat
          ports:
          - name: http
            containerPort: 80