kubernetes1.5.2集群部署过程--安全模式
发布日期:2025-04-03 04:02:26 浏览次数:8 分类:精选文章

本文共 3892 字,大约阅读时间需要 12 分钟。

Kubernetes 安全版集群部署指南

在 Kubernetes 生产环境中安全可靠地部署集群至关重要。本文将详细介绍如何在 CentOS 7 �arestates 系统上安全地部署带有SSL 保证的 Kubernetes 集群。我们将利用 cfssl 工具进行内置 CA 证书管理,确保所有组件间通信安全,有效防止非授权访问。


环境配置

  • 宿主机配置

    CentOS 7.3.1611,Selinux 关闭,Etcd 3.1.9,Flannel 0.7.1,Docker 1.12.6,Kubernetes 1.5.2。

  • 网络设备

    提供内部网络 192.168.20.0/24,使用 Flannel 进行网络管理。(详细网络配置可参考下文)


软件安装

通过 Yum 安装以下软件包:

yum install etcd kubernetes kubernetes-client kubernetes-master kubernetes-node flannel docker docker-devel docker-client docker-common -y

证书部署

我们将使用 cfssl 工具进行证书管理。以下是主要步骤:

cfssl 安装

下载并安装 cfssl 工具:

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64chmod a+x cfssl* mv cfssl-certinfo_linux-amd64 cfssl-certinfomv cfssl_linux-amd64 cfsslmv cfssljson_linux-amd64 cfssljson

CA 证书签发与配置

  • 生成 CA 证书
    通过 ca-config.json 定义 CA 签名配置:
    {  "signing": {    "default": {      "expiry": "87600h"    // 证书有效期为 30 天    }  },  "profiles": {    "kubernetes": {      "usages": [        "signing",        "key encipherment",        "server auth",        "client auth"      ],      "expiry": "87600h"    }  }}

    使用以下命令签发 CA 证书:

    cfssl gencert -initca ca-csr.json | cfssljson -bare ca
  • ");

    2. **签发 Kubernetes 组件证书**  - **kube-master 证书**:    定义服务相关 IP 或域名,并签发证书。    ```bash  cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-master-csr.json | cfssljson -bare kube-master  ```- **kubelet 证书**:    定义节点相关 IP 或域名,签发 kubelet 证书。    ```bash  cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kubelet-csr.json | cfssljson -bare kubelet  ```- **Etcd 命名证书**:    标记 Etcd 成员证书,用于集群通信。    ```bash  cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes etcd-member-csr.json | cfssljson -bare etcd-member  ```### 证书校验使用 `cfssl-certinfo` 工具验证证书内容,确保所有证书字段正确无误。### 证书分发将生成的证书分发到相应服务器:- Etcd 证书:拷贝到 `/etc/ssl/etcd` 目录,权限设置为 `etcd:etcd`。- Kubernetes 组件证书:拷贝到 `/etc/ssl/kube` 目录,权限设置为 `kube:kube`。- Etcd 客户端证书:拷贝到所有节点客户端,确保通信顺畅。---## Kubernetes 集群配置### Etcd 部署配置 Etcd 服务文件:  ```bash# etcd.conf [member]ETCD_NAME=kube-masterETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_CLIENT_URLS="https://192.168.20.128:2379, http://localhost:2379, http://localhost:4001"[cluster]ETCD_ADVERTISE_CLIENT_URLS="https://192.168.20.128:2379"[security]ETCD_CERT_FILE="/etc/ssl/etcd/etcd-client.pem"ETCD_KEY_FILE="/etc/ssl/etcd/etcd-client-key.pem"ETCD_CLIENT_CERT_AUTH="true"ETCD_TRUSTED_CA_FILE="/etc/ssl/etcd/ca.pem"

    启动 Etcd 服务:

    service etcd start

    Flannel 部署

    配置 Flannel 网络:

    将以下内容写入 /etc/sysconfig/flanneld

    FLANNEL_ETCD_ENDPOINTS="https://192.168.20.128:2379 --etcd-cafile=/etc/ssl/kube/ca.pem --etcd-certfile=/etc/ssl/kube/etcd-client.pem --etcd-keyfile=/etc/ssl/kube/etcd-client-key.pem"FLANNEL_ETCD_PREFIX="/k8s.io"

    启动 Flannel 服务:

    systemctl start flanneld

    创建 Flannel 网络:

    etcdctl --ca-file=/etc/ssl/etcd/ca.pem --cert-file=/etc/ssl/etcd/etcd-client.pem --key-file=/etc/ssl/etcd/etcd-client-key.pem mk /k8s.io/metadata/config '{"network": "192.168.0.0/16"}'

    Kubernetes 组件部署

    Controller Manager 配置

    • 配置文件路径:/etc/kubernetes/controller-manager
      示例配置文件:
      KUBE_CONTROLLER_MANAGER_ARGS="--service-account-private-key-file=/etc/ssl/kube/kube-master-key.pem --root-ca-file=/etc/ssl/kube/ca.pem --master=http://localhost:8080"

    API Server 配置

    • 配置文件路径:/etc/kubernetes/apiserver
      示例配置文件:
      --insecure-bind-address=127.0.0.1--basic-auth-file=/etc/kubernetes/useraccount.csv--etcd-servers=https://192.168.20.128:2379--etcd-cafile=/etc/ssl/kube/ca.pem--etcd-certfile=/etc/ssl/kube/etcd-client.pem--etcd-keyfile=/etc/ssl/kube/etcd-client-key.pem

      启动 API Server:

      systemctl restart kube-apiserver

    Nodes 配置

    • 配置文件路径:/etc/kubernetes/kubelet
      示例配置文件:
      KUBELET_ADDRESS=0.0.0.0KUBELET_PORT=10250KUBELET_HOSTNAME=kube-node-01

      启动 kubelet 服务:

      systemctl restart kubelet

    ##سلام،欢迎访问我的个人博客 就.gsubstack.com. 如果您有任何问题或需要进一步帮助,请随时联系我!

    上一篇:kubernetes1.5.2集群部署过程--非安全模式
    下一篇:kubernetes1.5.2--部署监控服务

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年04月15日 05时52分18秒