📜  Kubernetes-秘密(1)

📅  最后修改于: 2023-12-03 14:43:43.307000             🧑  作者: Mango

Kubernetes-秘密

Kubernetes是一个颇受欢迎的容器编排平台,它使得开发人员和管理人员可以更加灵活和高效地管理容器化的应用程序。然而,在使用Kubernetes时有一些秘密和注意事项需要注意。

1. 密钥和秘密

在容器中保存机密信息非常重要,例如密码,数据库凭据等。Kubernetes中的'秘密(Secrets)'是用于安全保存敏感数据的特殊对象。这些密钥和凭证将加密并存储在etcd集群中。

以下是一个典型的创建秘密的yaml文件示例:

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  username: YWRtaW4=
  password: MWYyZDFlMmU2N2Rm

上面的yaml文件创建了一个名为'mysecret'的秘密对象,其中包含加密的用户名和密码。

注意: 
1. 对于敏感信息,请使用'data'字段的base64编码。
2. 秘密密钥本身不应该在yaml文件或代码库中明文表示。
2. 节点亲和性和反亲和性

节点亲和性和反亲和性允许我们将Pods的调度限制为与特定类型的节点或避免具有特定属性的节点相匹配。

例如,假设我们有一组需要运行在多个区域的应用程序,并且想要尽可能将Pods部署在本地的节点上,我们可以使用亲和性规则来实现。

以下是一些基于节点标签的典型Pods.yaml文件的示例代码:

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
    - name: nginx
      image: nginx
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
          - matchExpressions:
              - key: region
                operator: In
                values:
                  - local

上述Pods.yaml示例包含一个以“requiredDuringSchedulingIgnoredDuringExecution”为前缀的节点亲和性规则。它指定了应该匹配哪些标签,并根据标签与节点进行匹配。

注意: 
1. 仅使用节点亲和性,而不是强制限制Pods分布,这可能导致节点过载或不平衡。
2. 可以使用Taints阻止调度到节点上。Taints类似于节点的“Do Not Disturb”(请勿打扰)标志。