• kubernetes 集群安全配置


    版本:v1.10.0-alpha.3

    openssl genrsa -out ca.key 2048

    openssl req -x509 -new -nodes -key ca.key -subj "/CN=mhc" -days 5000 -out ca.crt

    openssl genrsa -out server.key 2048

    /CN 后是主机名

    [root@mhc ssl]# cat master_ssl.cnf
    [req]
    req_extensions = v3_req
    distinguished_name = req_distinguished_name
    [req_distinguished_name]
    [v3_req]
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation,digitalSignature,keyEncipherment
    subjectAltName = @alt_names
    [alt_names]
    DNS.1 = kubernetes
    DNS.2 = kubernetes.default
    DNS.3 = kubernetes.default.svc
    DNS.4 = kubernetes.default.svc.cluster.local
    DNS.5 = mhc
    IP.1 = 10.254.0.1
    IP.2 = 109.105.4.65
    --------------------------------------------------------------------------------------------

    openssl req -new -key server.key -subj "/CN=mhc" -config master_ssl.cnf -out server.csr

    openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 5000 -extensions v3_req -extfile master_ssl.cnf -out server.crt

    ------------------------------------------------------------------------------------------

    启动apiserver

    setsid kube-apiserver --logtostderr=true --v=0 --etcd-servers=http://109.105.4.65:4001 --insecure-bind-address=0.0.0.0 --insecure-port=0 --secure-port=6443 --service-cluster-ip-range=10.0.0.0/16 --client-ca-file=/root/test/k8s/ssl/ca.crt --tls-private-key-file=/root/test/k8s/ssl/server.key --tls-cert-file=/root/test/k8s/ssl/server.crt > apiserver.log 2>&1

    ----------------------------------------------------------------------------------------------

    openssl genrsa -out cs_client.key 2048

    openssl req -new -key cs_client.key -subj "/CN=mhc" -out cs_client.csr

    openssl x509 -req -in cs_client.csr -CA ../ssl/ca.crt -CAkey ../ssl/ca.key -CAcreateserial -out cs_client.crt -days 5000

    kubectl config --kubeconfig=kubeconfig set-cluster local --server=https://109.105.4.65:6443 --certificate-authority=/root/test/k8s/ssl/ca.crt

    kubectl config --kubeconfig=kubeconfig set-credentials controllermanager --client-certificate=/root/test/k8s/client_ssl/cs_client.crt --client-key=/root/test/k8s/client_ssl/cs_client.key

    kubectl config --kubeconfig=kubeconfig set-context my-context --cluster=local --user=controllermanager

    [root@mhc client_ssl]# kubectl config --kubeconfig=kubeconfig view
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority: /root/test/k8s/ssl/ca.crt
        server: https://109.105.4.65:6443
      name: local
    contexts:
    - context:
        cluster: local
        user: controllermanager
      name: my-context
    current-context: ""
    kind: Config
    preferences: {}
    users:
    - name: controllermanager
      user:
        client-certificate: cs_client.crt
        client-key: cs_client.key
    -----------------------------------------------------------

    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority: /root/test/k8s/ssl/ca.crt
        server: https://109.105.4.65:6443
      name: local
    contexts:
    - context:
        cluster: local
        user: controllermanager
      name: my-context
    current-context: "my-context"
    kind: Config
    preferences: {}
    users:
    - name: controllermanager
      user:
        client-certificate: cs_client.crt
        client-key: cs_client.key

    ---------------------------------------------------------

    setsid kube-controller-manager --logtostderr=true --v=0 --service-account-private-key-file=/root/test/k8s/ssl/server.key --root-ca-file=/root/test/k8s/ssl/ca.crt --kubeconfig=/root/test/k8s/client_ssl/kubeconfig > controller-manager.log 2>&1

    setsid kube-scheduler --logtostderr=true --v=0 --kubeconfig=/root/test/k8s/client_ssl/kubeconfig > scheduler.log 2>&1

    将上边的kubeconfig 改名为config  放到/root/.kube

    [root@mhc .kube]# kubectl get componentstatus
    NAME                 STATUS    MESSAGE              ERROR
    controller-manager   Healthy   ok                   
    scheduler            Healthy   ok                   
    etcd-0               Healthy   {"health": "true"} 

    -----------------------------------------------------------------

    openssl genrsa -out kubelet_client.key 2048

    openssl req -new -key kubelet_client.key -subj "/CN=mhc" -out kubelet_client.csr                         //CN 写node自己的主机名

    openssl x509 -req -in kubelet_client.csr -CA ../ssl/ca.crt -CAkey ../ssl/ca.key -CAcreateserial -out kubelet_client.crt -days 5000

    kubectl config --kubeconfig=kubeconfig set-cluster local --server=https://109.105.4.65:6443 --certificate-authority=/root/test/k8s/ssl/ca.crt

    kubectl config --kubeconfig=kubeconfig set-credentials kubelet --client-certificate=/root/test/k8s/node_ssl/kubelet_client.crt --client-key=/root/test/k8s/node_ssl/kubelet_client.key

    kubectl config --kubeconfig=kubeconfig set-context my-context --cluster=local --user=kubelet

    修改其中的 current-context

    ----------------------------------------------------------

    setsid kubelet --logtostderr=true --v=0 --address=0.0.0.0 --cgroup-driver=systemd --kubeconfig=/root/test/k8s/node_ssl/kubeconfig --fail-swap-on=false > kubelet.log 2>&1

    setsid kube-proxy --logtostderr=true --v=0 --kubeconfig=/root/test/k8s/node_ssl/kubeconfig > proxy.log 2>&1

    ----------------------------------------------------------

    [root@mhc .kube]# kubectl get node
    NAME      STATUS    ROLES     AGE       VERSION
    mhc       Ready     <none>    2m        v1.10.0-alpha.3

  • 相关阅读:
    第一次讲课
    请允许我悄悄的爱你一次好吗 zz
    装.NET实在是一种折磨,
    第一次听课
    路,在何方?
    UNION和UNION ALL 的区别
    利用jquery操作select下拉列表框
    理解 collate Chinese_PRC_CI_AS
    sql 中 case when 实例
    sql 中 case when 实例(2)
  • 原文地址:https://www.cnblogs.com/mhc-fly/p/8413569.html
Copyright © 2020-2023  润新知