乾貨|Kubernetes叢集部署 Nginx-ingress Controller
Kubernetes提供了兩種內建的雲端負載均衡機制用於釋出公共應用,一種是工作於傳輸層的Service資源,它實現的是TCP負載均衡器;另一種是Ingress資源,它實現的是HTTP(S)負載均衡器。
今天我們來重點討論Ingress資源。HTTP(S)負載均衡器是應用層負載均衡機制的一種,支援根據環境做出更好的排程決策。與傳輸層排程器相比,它提供了可自定義URL對映和TLS等功能,並支援多種健康狀態檢查機制。
Ingress是Kubernetes API的標準資源型別之一,它其實就是一組基於DNS名稱或URL路徑把請求轉發至指定的Service資源的規則,用於將叢集外部的請求流量轉發至叢集內部完成服務釋出。然而,Ingress資源自身並不能進行“流量穿透”,它僅是一組路由規則的集合,這些規則要想真正發揮作用還需要其他功能的輔助,如監聽某套接字,然後根據這些規則的匹配機制路由請求流量。這種能夠為Ingress資源監聽套接字並轉發流量的元件稱為Ingress Controller。
一、部署Helm
Helm是一個包管理工具, 把Kubernetes資源(比如deployments、services或 ingress等) 打包到一個chart中,方便將其chart儲存到chart倉庫用來儲存和分享, Helm支援釋出應用配置的版本管理, 使釋出可配置, 簡化了Kubernetes部署應用的版本控制、打包、釋出、刪除、更新等操作。
-
安裝Helm
1、官網下載Helm二進位制檔案,當前最新版本為2.14.0;
wget
2、解壓縮檔案並將目錄中二進位制檔案移動到/usr/local/bin/下;
tar -zxvf helm-v2.14.0-linux-amd64.tar.gz mv linux-amd64/helm /usr/local/bin/helm
3、為Tiller新增許可權,詳見Role-based Access Control,新建
rbac-config.yaml,內容如下:
apiVersion: v1 kind: ServiceAccount metadata: name: tiller namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: tiller roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: tiller namespace: kube-system
執行create命令:
kubectl create -f rbac-config.yaml
4、初始化 Helm 並安裝 Tiller 服務
helm init --upgrade --service-account tiller --tiller-image sapcc/tiller:v2.14.0
5、檢視helm版本,出現以下資訊,確認安裝成功:
Client: &version.Version{SemVer:"v2.14.0", GitCommit:"8478fb4fc723885b155c924d1c8c410b7a9444e6", GitTreeState:"clean"} Server: &version.Version{SemVer:"v2.14.0", GitCommit:"8478fb4fc723885b155c924d1c8c410b7a9444e6", GitTreeState:"clean"}
6、chart列表
helm repo update
7、測試chart是否可用
helm search
二、使用Helm安裝nginx-ingress
-
安裝nginx-ingress
1、執行helm install命令
helm install stable/nginx-ingress --name my-nginx --set rbac.create=true
--name:為安裝的應用命名
2、檢視helm 列表
3、檢視ingress的service
kuberctl get svc
三、部署nginx例項應用
-
部署nginx的deployment
1、編輯nginx-app.yaml檔案
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginxdemos/hello:latest ports: - containerPort: 80
2、執行create建立命令
kubectl create -f nginx-app.yaml
3、檢測deployment部署情況
kubectl get deployment nginx-deployment
-
為nginx的deployment建立service
1、執行expose命令
kubectl expose deployment nginx-deployment --target-port=80 --port=80 --protocol=TCP --name=jdc-test
2、確認服務建立完成
kubectl get svc
-
為service建立ingress
1、編輯 ingress-nginx.yaml檔案
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: jdc-ingress-controller-test annotations: metadata.annotations.kubernetes.io/ingress.class: "nginx" spec: rules: - host: test.nginx-ingress.jdc-test http: paths: - path: / backend: serviceName: jdc-test servicePort: 80
2、執行create建立命令
kubectl create –f ingress-nginx.yaml
3、檢視ingress部署情況
kubectl get ingress
4、在客戶端新增靜態解析,公網IP是nginx controller的service公網IP,域名是ingress的host:test.nginx-ingress.jdc-test
5、瀏覽器輸入url 訪問測試
歡迎點選“ 京東雲 ”瞭解更多精彩內容
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69912185/viewspace-2657692/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 拆除kubeadm部署的Kubernetes 叢集
- Kubernetes部署叢集Mysql服務MySql
- 在 Azure 上部署 Kubernetes 叢集
- 在kubernetes上部署consul叢集
- 將 .NET Aspire 部署到 Kubernetes 叢集
- 在 Azure 中部署 Kubernetes 容器叢集
- 基於containerd 部署 kubernetes 1.28叢集AI
- Kubernetes叢集部署史上最詳細(二)Prometheus監控Kubernetes叢集Prometheus
- 部署Kubernetes v1.22.10高可用叢集
- Kubernetes 部署 Nebula 圖資料庫叢集資料庫
- 教你在Kubernetes中快速部署ES叢集
- 基於Ubuntu部署企業級kubernetes叢集---k8s叢集容部署UbuntuK8S
- kubeadm部署一主兩從的kubernetes叢集
- 容器化 | 在 Kubernetes 上部署 RadonDB MySQL 叢集MySql
- 使用 Kubeadm+Containerd 部署一個 Kubernetes 叢集AI
- 使用Rancher在Kubernetes上部署EMQ X叢集MQ
- 使用Minikube部署本地Kubernetes叢集(二十八)
- 利用 Kubeadm部署 Kubernetes 1.13.1 叢集實踐錄
- Kubernetes叢集部署
- Kubernetes(k8s)部署redis-cluster叢集K8SRedis
- Kubernetes實戰:高可用叢集的搭建和部署
- Kubernetes — 在 OpenStack 上使用 kubeadm 部署高可用叢集
- 實踐展示openEuler部署Kubernetes 1.29.4版本叢集
- Kubernetes 叢集搭建(上)
- Kubernetes 叢集搭建(下)
- Kubernetes叢集搭建(vagrant)
- kubernetes與web叢集Web
- KubeSphere 最佳實戰:Kubernetes 部署叢集模式 Nacos 實戰指南模式
- kubeadm部署kubernetes v1.29.0叢集(k8s1.29.0)K8S
- 部署分片叢集
- DaemonSet方式部署nginx-ingressNginx
- 乾貨分享|GBase 8a叢集雙活容災方案
- Kubernetes&Docker叢集部署Docker
- Kubernetes叢集部署Node Feature Discovery元件用於檢測叢集節點特性元件
- Kubernetes叢集部署史上最詳細(一)Kubernetes叢集安裝
- 5000+字硬核乾貨!Redis 分散式叢集部署實戰Redis分散式
- K8s叢集nginx-ingress監控告警最佳實踐K8SNginx
- 搭建 Kubernetes 高可用叢集