视频来源:B站《(2022版)最新、最全、最详细的Kubernetes(K8s)教程,从K8s安装到实战一套搞定》
一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:(2022版)一套教程搞定k8s安装到实战 | 汇总_COCOgsta的博客-CSDN博客
通俗来讲,Ingress和之前提到的Service、Deployment,也是一个k8s的资源类型,Ingress用于实现用域名的方式访问k8s内部应用。
首先安装heml管理工具:helm.sh/docs/intro/…
- [root@k8s-master-lb ~]# helm version
- version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
- You have new mail in /var/spool/mail/root
- 复制代码
使用helm安装ingress:kubernetes.github.io/ingress-ngi…
- helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
- 复制代码
- helm pull ingress-nginx/ingress-nginx
- 复制代码
- mkdir temp
- mv ingress-nginx-3.6.0.tgz temp/ # 实际helm仓库下载的为4.2.1,但为与视频环境保持一致,单独下载3.6.0
- cd temp/
- tar xf ingress-nginx-3.6.0.tgz
- cd ingress-nginx
- vim values.yaml
- 复制代码
需要修改的位置
给需要部署ingress的节点上打标签
- kubectl label node k8s-master03 ingress=true
- kubectl create ns ingress-nginx
- helm install ingress-nginx -n ingress-nginx .
- 复制代码
安装成功后可以看到如下提示:
- [root@k8s-master-lb ingress-nginx]# helm install ingress-nginx -n ingress-nginx .
- NAME: ingress-nginx
- LAST DEPLOYED: Sat Aug 20 12:59:50 2022
- NAMESPACE: ingress-nginx
- STATUS: deployed
- REVISION: 1
- TEST SUITE: None
- NOTES:
- The ingress-nginx controller has been installed.
- Get the application URL by running these commands:
- export POD_NAME=$(kubectl --namespace ingress-nginx get pods -o jsonpath="{.items[0].metadata.name}" -l "app=ingress-nginx,component=,release=ingress-nginx")
- kubectl --namespace ingress-nginx port-forward $POD_NAME 8080:80
- echo "Visit http://127.0.0.1:8080 to access your application."
-
- An example Ingress that makes use of the controller:
-
- apiVersion: networking.k8s.io/v1beta1
- kind: Ingress
- metadata:
- annotations:
- kubernetes.io/ingress.class: nginx
- name: example
- namespace: foo
- spec:
- rules:
- - host: www.example.com
- http:
- paths:
- - backend:
- serviceName: exampleService
- servicePort: 80
- path: /
- # This section is only required if TLS is to be enabled for the Ingress
- tls:
- - hosts:
- - www.example.com
- secretName: example-tls
-
- If TLS is enabled for the Ingress, a Secret containing the certificate and key must also be provided:
-
- apiVersion: v1
- kind: Secret
- metadata:
- name: example-tls
- namespace: foo
- data:
- tls.crt: <base64 encoded cert>
- tls.key: <base64 encoded key>
- type: kubernetes.io/tls
- [root@k8s-master-lb ingress-nginx]#
- 复制代码
检查ingress运行状态
- [root@k8s-master-lb ingress-nginx]# kubectl get pods -n ingress-nginx
- NAME READY STATUS RESTARTS AGE
- ingress-nginx-controller-9gf7t 1/1 Running 0 106s
- [root@k8s-master-lb ingress-nginx]#
- 复制代码
ingress.yaml(单域名映射)
- apiVersion: networking.k8s.io/v1beta1 # networking.k8s.io/v1 / extensions/v1beta1
- kind: Ingress
- metadata:
- annotations:
- kubernetes.io/ingress.class: "nginx"
- name: example
- spec:
- rules: # 一个Ingress可以配置多个rules
- - host: foo.bar.com # 域名配置,可以不写,匹配*, *.bar.com
- http:
- paths: # 相当于nginx的location配合,同一个host可以配置多个path / /abc
- - backend:
- serviceName: nginx-svc
- servicePort: 80
- path: /
- 复制代码
ingress-mulDomain.yaml(多域名映射)
- apiVersion: networking.k8s.io/v1beta1 # networking.k8s.io/v1 / extensions/v1beta1
- kind: Ingress
- metadata:
- annotations:
- kubernetes.io/ingress.class: "nginx"
- name: example
- spec:
- rules: # 一个Ingress可以配置多个rules
- - host: foo.bar.com # 域名配置,可以不写,匹配*, *.bar.com
- http:
- paths: # 相当于nginx的location配合,同一个host可以配置多个path / /abc
- - backend:
- serviceName: nginx-svc
- servicePort: 80
- path: /
- - host: foo2.bar.com # 域名配置,可以不写,匹配*, *.bar.com
- http:
- paths: # 相当于nginx的location配合,同一个host可以配置多个path / /abc
- - backend:
- serviceName: nginx-svc-external
- servicePort: 80
- path: /
- 复制代码