k8s学习-Secret(创建、使用、更新、删除等)_kubectl delete secret

目录

概念

Secret 是一个主要用来存储密码、token 等一些敏感信息的资源对象。其中,敏感信息是采用 Base64 编码保存起来的。

注意:Base64只是一种编码,不含密钥的,并不安全。默认情况下,Kubernetes Secret 未加密地存储在 API 服务器的底层数据存储(etcd)中。 任何拥有 API 访问权限的人都可以检索或修改 Secret,任何有权访问 etcd 的人也可以。 此外,任何有权限在命名空间中创建 Pod 的人都可以使用该访问权限读取该命名空间中的任何 Secret;
secret安全相关的静态加密等,将在k8s学习-思维导图与学习笔记中的安全部分详细展开。

模板

secret_test.yaml

apiVersion: v1
kind: Secret
metadata:
  name: secret-test
type: Opaque
data:
  username: YWRtaW4=
stringData:
  username: administrator

secret的类型

内置类型用法
Opaque用户定义的任意数据
kubernetes.io/service-account-token服务账号令牌
kubernetes.io/dockercfg~/.dockercfg 文件的序列化形式
kubernetes.io/dockerconfigjson~/.docker/config.json 文件的序列化形式
kubernetes.io/basic-auth用于基本身份认证的凭据
kubernetes.io/ssh-auth用于 SSH 身份认证的凭据
kubernetes.io/tls用于 TLS 客户端或者服务器端的数据
bootstrap.kubernetes.io/token启动引导令牌数据

实战

创建

使用kubectl

命令
写入账号密码

echo -n 'lady-killer9' > ./username.txt
echo -n '1f2d1e2e67df' > ./password.txt

创建secret

kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt -n killer

结果
在这里插入图片描述
在这里插入图片描述
可以看到默认密钥名称是文件名,值是base64编码的。
注意,特殊字符需要使用 \ 进行转义,例如$

使用yaml文件创建

可以base64编码后放到data或者明文放到stringData,同时存在时,后者优先级更高。

命令
在这里插入图片描述
结果
在这里插入图片描述

使用

环境变量

k8s学习-ConfigMap(创建、使用、更新、删除等)的基本一致,configMapRef改为secretKeyRef即可。
示例

apiVersion: v1
kind: Pod
metadata:
  name: secret-test-pod
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "env" ]
      envFrom:
      - secretRef:
          name: mysecret
  restartPolicy: Never

挂载

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

😝朋友们如果有需要的话,可以联系领取~

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

2️⃣视频配套工具&国内外网安书籍、文档
① 工具

② 视频

image1

③ 书籍

image2

资源较为敏感,未展示全面,需要的最下面获取

在这里插入图片描述在这里插入图片描述

② 简历模板

在这里插入图片描述

因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

<think>好的,用户现在问的是在Kubernetes 1.23版本下使用Ceph Nautilus版本,通过Ceph-CSI实现RBD持久化存储。首先,我需要回顾之前的历史对话,用户之前询问过K8s 1.23兼容的CSI版本,我给出了详细的兼容性信息,特别是提到了Ceph RBD/CSI的最低版本要求。现在用户具体到Ceph Nautilus,需要结合这两个版本来回答。 首先,要确认Ceph Nautilus是否支持与K8s 1.23的Ceph-CSI版本兼容。根据之前的回复,Ceph CSI需要v3.6.0+,并且Ceph Octopus(v15.2.0)或更高版本。但用户现在使用的是Nautilus,即Ceph 14.2.x,这可能存在兼容性问题。需要检查Ceph-CSI的文档,看看是否有对Nautilus的支持。 接下来,用户可能想知道如何在K8s 1.23上部署Ceph-CSI并使用RBD,但需要注意版本兼容性。可能需要指出虽然官方推荐Octopus或更高版本,但Nautilus可能仍然可用,但存在某些限制或需要特定版本的Ceph-CSI。 另外,用户可能需要具体的部署步骤,比如如何配置Secret、StorageClass等。这时候需要提供示例YAML文件,并确保参数正确,比如monitors的地址,pool的名称,以及csi配置中的集群ID等。 还需要注意K8s 1.23的一些变化是否会影响Ceph-CSI的使用,比如之前提到的弃用特性,比如CSIVolumeFSGroupPolicy,需要确认Ceph-CSI是否已经适配了这些变化。 同时,用户可能会遇到的问题包括认证失败、RBD镜像创建失败、挂载问题等,需要提供常见问题的解决方法,比如检查密钥是否正确,Ceph集群状态,内核模块是否加载等。 可能还需要提醒用户,虽然Nautilus可能在某些情况下工作,但为了更好的兼容性和功能支持,建议升级到Octopus或更高版本。特别是如果用户遇到无法解决的问题,升级Ceph可能是一个必要的步骤。 最后,总结部分需要明确列出兼容性要点、部署步骤和注意事项,确保用户能够清晰理解并在实际操作中参考。同时,提供官方文档链接,方便用户深入查阅。</think>以下是 Kubernetes 1.23 与 Ceph Nautilus (v14.2.x) 结合使用 Ceph-CSI 实现 RBD 持久化存储的完整指南: --- ### **一、兼容性验证** #### **1. 版本对应关系** | **组件** | **最低要求版本** | **说明** | |-------------------|---------------------------|-------------------------------------------------------------------------| | **Ceph 集群** | Nautilus (v14.2.x) | *官方推荐 Octopus (v15.2.0)+,但 Nautilus 仍可兼容* | | **Ceph-CSI** | v3.5.0+ | *v3.6.0+ 开始对 Kubernetes 1.23 有更完善的支持* | | **Kubernetes** | 1.23.x | 需启用 `CSIDriverRegistry` 和 `VolumeSnapshotDataSource` 特性门控(默认开启) | #### **2. 限制说明** - **RBD 功能限制**:Nautilus 不支持较新的 RBD 特性(如 `fast-diff` 镜像克隆加速)。 - **CSI 特性支持**:Ceph-CSI v3.x 在 Nautilus 上**不支持**以下功能: - 卷扩容(需 Ceph Octopus+) - 快照跨集群复制 - RBD Mirroring 自动故障转移 --- ### **二、部署 Ceph-CSI RBD 驱动** #### **1. 前提条件** - Ceph 集群已部署,且包含至少一个 RBD Pool(例如 `kubernetes`)。 - 所有 Kubernetes 节点已安装 `rbd` 内核模块: ```bash modprobe rbd # 手动加载模块(若无则需升级内核或安装 ceph-common 工具包) ``` - 获取 Ceph 管理员密钥(`ceph auth get-key client.admin`)。 #### **2. 创建 Kubernetes Secret** 生成包含 Ceph 集群凭据的 Secret: ```yaml # ceph-secret.yaml apiVersion: v1 kind: Secret metadata: name: ceph-admin-secret namespace: kube-system type: kubernetes.io/rbd data: key: <base64编码的Ceph管理员密钥> # echo "<key>" | base64 ``` #### **3. 部署 Ceph-CSI 驱动** 使用官方 Helm Chart 或 YAML 部署(以 YAML 为例): ```yaml # ceph-csi-rbd.yaml --- apiVersion: storage.k8s.io/v1 kind: CSIDriver metadata: name: rbd.csi.ceph.com spec: attachRequired: true podInfoOnMount: true --- # 部署 CSI Controller kind: Deployment apiVersion: apps/v1 metadata: name: csi-rbdplugin-provisioner namespace: kube-system spec: replicas: 2 selector: matchLabels: app: csi-rbdplugin-provisioner template: metadata: labels: app: csi-rbdplugin-provisioner spec: containers: - name: csi-provisioner image: quay.io/k8scsi/csi-provisioner:v3.0.0 args: ["--csi-address=$(ADDRESS)", "--v=5"] env: - name: ADDRESS value: /var/lib/csi/sockets/pluginproxy/csi.sock volumeMounts: - name: socket-dir mountPath: /var/lib/csi/sockets/pluginproxy/ - name: csi-rbdplugin image: quay.io/cephcsi/cephcsi:v3.6.0 args: ["--nodeid=$(NODE_ID)", "--type=rbd", "--controllerserver=true"] env: - name: NODE_ID valueFrom: fieldRef: fieldPath: spec.nodeName volumeMounts: - name: socket-dir mountPath: /var/lib/csi/sockets/pluginproxy/ volumes: - name: socket-dir emptyDir: {} --- # 部署 CSI Node kind: DaemonSet apiVersion: apps/v1 metadata: name: csi-rbdplugin namespace: kube-system spec: selector: matchLabels: app: csi-rbdplugin template: metadata: labels: app: csi-rbdplugin spec: containers: - name: csi-rbdplugin image: quay.io/cephcsi/cephcsi:v3.6.0 args: ["--nodeid=$(NODE_ID)", "--type=rbd", "--nodeserver=true"] env: - name: NODE_ID valueFrom: fieldRef: fieldPath: spec.nodeName securityContext: privileged: true volumeMounts: - name: plugin-dir mountPath: /var/lib/kubelet/plugins/rbd.csi.ceph.com - name: pods-mount-dir mountPath: /var/lib/kubelet/pods mountPropagation: Bidirectional volumes: - name: plugin-dir hostPath: path: /var/lib/kubelet/plugins/rbd.csi.ceph.com type: DirectoryOrCreate - name: pods-mount-dir hostPath: path: /var/lib/kubelet/pods type: Directory ``` #### **4. 创建 StorageClass** 定义 RBD 存储类: ```yaml # storageclass-rbd.yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-rbd-sc provisioner: rbd.csi.ceph.com parameters: clusterID: <ceph集群ID> # 通过 `ceph fsid` 获取 pool: kubernetes imageFeatures: layering csi.storage.k8s.io/provisioner-secret-name: ceph-admin-secret csi.storage.k8s.io/provisioner-secret-namespace: kube-system csi.storage.k8s.io/node-stage-secret-name: ceph-admin-secret csi.storage.k8s.io/node-stage-secret-namespace: kube-system reclaimPolicy: Delete allowVolumeExpansion: false # Nautilus 不支持扩容 mountOptions: - discard ``` --- ### **三、功能验证** #### **1. 创建 PVC 测试** ```yaml # pvc-test.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: rbd-pvc-test spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: csi-rbd-sc ``` #### **2. 挂载到 Pod** ```yaml # pod-test.yaml apiVersion: v1 kind: Pod metadata: name: rbd-pod-test spec: containers: - name: app image: alpine command: ["sleep", "infinity"] volumeMounts: - name: data mountPath: /data volumes: - name: data persistentVolumeClaim: claimName: rbd-pvc-test ``` #### **3. 检查状态** ```bash kubectl get pvc rbd-pvc-test # 应显示 Bound kubectl exec -it rbd-pod-test -- df -h /data # 查看挂载结果 ``` --- ### **四、故障排查** #### **常见问题与解决** 1. **PVC 处于 Pending 状态** - 检查 Ceph 集群监控地址是否可达。 - 验证 Secret 中的密钥是否正确(`kubectl get secret -n kube-system ceph-admin-secret -o yaml`)。 - 查看 CSI Controller 日志:`kubectl logs -n kube-system csi-rbdplugin-provisioner-xxxxx` 2. **Pod 挂载失败** - 确认节点已加载 `rbd` 内核模块(`lsmod | grep rbd`)。 - 检查 Ceph 集群的 RBD Pool 是否存在且权限正确。 3. **性能问题** - 调整 `mountOptions`,例如添加 `nouuid,relatime`。 - 启用 RBD 缓存(需权衡数据一致性风险)。 --- ### **五、升级建议** | **组件** | **推荐动作** | |--------------|-----------------------------------------------------------------------------| | **Ceph** | 升级至 Octopus (v15.2.0)+ 以支持卷扩容、快照克隆等新特性 | | **Ceph-CSI** | 使用 v3.8.0+ 版本以获得完整的 Kubernetes 1.23 兼容性 | --- 如需进一步优化,可参考 [Ceph-CSI 官方文档](https://docs.ceph.com/en/latest/rbd/rbd-kubernetes/) 调整参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值