Hwang's Blog

K8S 中的 Ingress/NFS的持久化存储

2021-04-28 · 3 min read
k8s

K8S 中的 Ingress/NFS的持久化存储

  • 与 Ingress 的链接方式相对应的是 Nodeport
  • Ingress 与 service 相关联
  • 使用ingress 后可以居于域名对pod提供的服务进行访问;

部署ingress

具体步骤

  1. 部署ingress Controller
  2. 创建 ingress 规则
    官方维护的是 nginx 控制器

查看状态

  • 查看对应名称空间即可
    kubectl get pods -n nginx-ingress

添加 https 支持

1. 生成 sercet对象

sudo kubectl create secret tls [secret 的名称] --key [证书key文件地址] --cert [证书pem文件地址] --namespace [如有必要指定namespace]

使用 kubectl get secret --namespace [如有必要指定namespace] 查看证书列表

使用sudo kubectl describe secrets/secret-https-gitlab --namespace [如有必要指定namespace] 查看特定证书信息。

出于安全考虑,k8s不会显示证书内容;

2. 在 Ingress 内填写配置

示例的配置基本结构如下

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: your-service-name
  namespace: your-name-space
spec:
  tls:
  - hosts:
    - your-site.com
    secretName: secret-name # secret 的名称

  rules:
  - host: your-site.com # 域名
    http:
      paths: 
      - pathType: Prefix # 文档 https://kubernetes.io/zh/docs/concepts/services-networking/ingress/
        path: "/"
        backend:
          service:
            name: your-service-name
            port: 
               number: 80 # 端口是内部端口,并不是外部端口;

需要注意的是 namespace 内需要有对应的 secret 哦,如果不指定,默认的 namespace 是在 default 的 namespace 中的。

持久化存储

0.部署一个NFS服务器

基本操作,参考一下网站内容就可以了;

1. 使用 helm 进行管理

安装 helm:
https://helm.sh/zh/docs/intro/install/

$ curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
$ sudo apt-get install apt-transport-https --yes
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
$ sudo apt-get update
$ sudo apt-get install helm

2. 使用 helm 进行 StorageClass 的设置

https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/blob/master/charts/nfs-subdir-external-provisioner/README.md

$ sudo helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
$ sudo helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
    --set nfs.server=x.x.x.x \
    --set nfs.path=/exported/path

编写pv.ymlpvc.yml文件,或者直接在 kuborad 上操作也是可以的;
注意,每个node节点都必须先安装好nfs-common,不然会报错哦:相关资料

apt-get install -y nfs-common

ps:可能需要科学的网络环境

生而为人,应该能够换尿布、策划入侵、杀猪、开船、造房子、 写十四行诗、算账、建墙、正骨、抚慰临终之人、接受命令、 下达命令、合作、独行、解决方程式、分析新问题、 清理马粪、编程、烹饪美食、高效战斗、英勇牺牲。 专业分工是给昆虫准备的。



Powered by Gridea

...