全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 1906|回复: 5
打印 上一主题 下一主题

[疑问] Kubernetes 1.8.3 集群部署 二进制安装 TLS

[复制链接]
跳转到指定楼层
1#
发表于 2018-3-12 21:15:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ccnif 于 2018-3-19 22:11 编辑

最近在折腾Kubernetes同步跟新下配置过程

环境介绍
    # centos 7.3 mini
    # 10.0.3.221 master 节点
    # 10.0.3.222 node 节点
    # 10.0.3.223 node 节点       
    # etcd 集群复用上面节点

一:安装准备
# k8s-m1 10.0.3.221
  1. yum install -y docker
  2. vi /etc/selinux/config
  3.     SELINUX=disabled
  4. setenforce 0
复制代码


# [k8s-n1 10.0.3.222, k8s-n3 10.0.3.223]
  1. yum install -y docker
  2. vi /etc/selinux/config
  3.     SELINUX=disabled
  4. setenforce 0
  5. mkdir -p /etc/kubernetes/ssl
  6. vi /etc/fstab
  7.     # 将swap系统注释掉
  8. /sbin/swapoff /dev/mapper/cl-swap
复制代码


二:创建TLS证书和秘钥
#k8s-m1 10.0.3.221
    # 安装 CFSSL
  1. wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
  2. chmod +x cfssl_linux-amd64
  3. mv cfssl_linux-amd64 /usr/local/bin/cfssl

  4. wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
  5. chmod +x cfssljson_linux-amd64
  6. mv cfssljson_linux-amd64 /usr/local/bin/cfssljson

  7. wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
  8. chmod +x cfssl-certinfo_linux-amd64
  9. mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo

  10. export PATH=/usr/local/bin:$PATH
复制代码


    # 创建 CA (Certificate Authority)
  1. mkdir /root/ssl
  2. cd /root/ssl
  3. cfssl print-defaults config > config.json
  4. cfssl print-defaults csr > csr.json
  5. cat > ca-config.json <<EOF
  6. {
  7.   "signing": {
  8.     "default": {
  9.       "expiry": "87600h"
  10.     },
  11.     "profiles": {
  12.       "kubernetes": {
  13.         "usages": [
  14.             "signing",
  15.             "key encipherment",
  16.             "server auth",
  17.             "client auth"
  18.         ],
  19.         "expiry": "87600h"
  20.       }
  21.     }
  22.   }
  23. }
  24. EOF
复制代码


    # 创建 CA 证书签名请求
  1. cat > ca-csr.json <<EOF
  2. {
  3.   "CN": "kubernetes",
  4.   "key": {
  5.     "algo": "rsa",
  6.     "size": 2048
  7.   },
  8.   "names": [
  9.     {
  10.       "C": "CN",
  11.       "ST": "BeiJing",
  12.       "L": "BeiJing",
  13.       "O": "k8s",
  14.       "OU": "System"
  15.     }
  16.   ]
  17. }
  18. EOF
复制代码


    # 创建 kubernetes 证书
  1. cat > kubernetes-csr.json <<EOF
  2. {
  3.   "CN": "kubernetes",
  4.   "hosts": [
  5.     "127.0.0.1",
  6.     "10.0.3.221",
  7.     "10.0.3.222",
  8.     "10.0.3.223",
  9.     "10.0.3.224",
  10.     "10.254.0.1",
  11.     "kubernetes",
  12.     "kubernetes.default",
  13.     "kubernetes.default.svc",
  14.     "kubernetes.default.svc.cluster",
  15.     "kubernetes.default.svc.cluster.local"
  16.   ],
  17.   "key": {
  18.       "algo": "rsa",
  19.       "size": 2048
  20.   },
  21.   "names": [
  22.       {
  23.           "C": "CN",
  24.           "ST": "BeiJing",
  25.           "L": "BeiJing",
  26.           "O": "k8s",
  27.           "OU": "System"
  28.       }
  29.   ]
  30. }
  31. EOF
复制代码


    # 生成 kubernetes 证书和私钥
  1. cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kubernetes-csr.json | cfssljson -bare kubernetes

  2. # 下方警告是正常的它是 cfssl 1.2.0 版本中的一个bug,它已经在master分支中被修复了;
  3. # [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable for
  4. # websites. For more information see the Baseline Requirements for the Issuance and Management
  5. # of Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);
  6. # specifically, section 10.2.3 ("Information Requirements").

  7. # 检查文件
  8. # [root@k8s-m1 ssl]# ls kubernetes*
  9. # kubernetes.csr  kubernetes-csr.json  kubernetes-key.pem  kubernetes.pem
复制代码


    # 创建 admin 证书签名请求文件 admin-csr.json:
  1. cat > admin-csr.json <<EOF
  2. {
  3.   "CN": "admin",
  4.   "hosts": [],
  5.   "key": {
  6.     "algo": "rsa",
  7.     "size": 2048
  8.   },
  9.   "names": [
  10.     {
  11.       "C": "CN",
  12.       "ST": "BeiJing",
  13.       "L": "BeiJing",
  14.       "O": "system:masters",
  15.       "OU": "System"
  16.     }
  17.   ]
  18. }
  19. EOF
复制代码


    # 生成 admin 证书和私钥:
  1. cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin
  2. # 检查文件
  3. # [root@k8s-m1 ssl]# ls admin*
  4. # admin.csr  admin-csr.json  admin-key.pem  admin.pem
复制代码


    # 创建 kube-proxy 证书签名请求文件 kube-proxy-csr.json:
  1. cat > kube-proxy-csr.json <<EOF
  2. {
  3.   "CN": "system:kube-proxy",
  4.   "hosts": [],
  5.   "key": {
  6.     "algo": "rsa",
  7.     "size": 2048
  8.   },
  9.   "names": [
  10.     {
  11.       "C": "CN",
  12.       "ST": "BeiJing",
  13.       "L": "BeiJing",
  14.       "O": "k8s",
  15.       "OU": "System"
  16.     }
  17.   ]
  18. }
  19. EOF
复制代码


    # 分发证书
  1. mkdir -p /etc/kubernetes/ssl
  2. cp *.pem /etc/kubernetes/ssl
  3. # 将生成的证书和秘钥文件(后缀名为.pem)拷贝到所有机器的 /etc/kubernetes/ssl 目录下备用;
  4.     scp /etc/kubernetes/ssl/*.pem [email protected]:/etc/kubernetes/ssl/
  5.     scp /etc/kubernetes/ssl/*.pem [email protected]:/etc/kubernetes/ssl/
复制代码


三:安装kubectl命令行工具
# k8s-m1 10.0.3.221
    # 下载 kubectl
  1. cd /tmp
  2. wget https://dl.k8s.io/v1.9.3/kubernetes-client-linux-amd64.tar.gz
  3. tar -xzvf kubernetes-client-linux-amd64.tar.gz
  4. cp kubernetes/client/bin/kube* /usr/bin/
  5. chmod a+x /usr/bin/kube*
复制代码


    # 创建 kubectl kubeconfig 文件
  1. export KUBE_APISERVER="https://10.0.3.221:6443"
  2. # 设置集群参数
  3.     kubectl config set-cluster kubernetes \
  4.     --certificate-authority=/etc/kubernetes/ssl/ca.pem \
  5.     --embed-certs=true \
  6.     --server=${KUBE_APISERVER}
  7. # 设置客户端认证参数
  8.     kubectl config set-credentials admin \
  9.     --client-certificate=/etc/kubernetes/ssl/admin.pem \
  10.     --embed-certs=true \
  11.     --client-key=/etc/kubernetes/ssl/admin-key.pem
  12. # 设置上下文参数
  13.     kubectl config set-context kubernetes \
  14.     --cluster=kubernetes \
  15.     --user=admin
  16. # 设置默认上下文
  17.     kubectl config use-context kubernetes
复制代码


    # 创建 TLS Bootstrapping Token
  1. export BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')
  2. cat > token.csv <<EOF
  3. ${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
  4. EOF
复制代码


    # 创建 kubelet bootstrapping kubeconfig 文件
  1. cd /etc/kubernetes
  2. export KUBE_APISERVER="https://10.0.3.221:6443"
  3. # 设置集群参数
  4.     kubectl config set-cluster kubernetes \
  5.       --certificate-authority=/etc/kubernetes/ssl/ca.pem \
  6.       --embed-certs=true \
  7.       --server=${KUBE_APISERVER} \
  8.       --kubeconfig=bootstrap.kubeconfig
  9. # 设置客户端认证参数
  10.     kubectl config set-credentials kubelet-bootstrap \
  11.       --token=${BOOTSTRAP_TOKEN} \
  12.       --kubeconfig=bootstrap.kubeconfig
  13. # 设置上下文参数
  14.     kubectl config set-context default \
  15.       --cluster=kubernetes \
  16.       --user=kubelet-bootstrap \
  17.       --kubeconfig=bootstrap.kubeconfig
  18. # 设置默认上下文
  19.     kubectl config use-context default --kubeconfig=bootstrap.kubeconfig
复制代码


    # 创建 kube-proxy kubeconfig 文件
  1. export KUBE_APISERVER="https://10.0.3.221:6443"
  2. # 设置集群参数
  3.     kubectl config set-cluster kubernetes \
  4.       --certificate-authority=/etc/kubernetes/ssl/ca.pem \
  5.       --embed-certs=true \
  6.       --server=${KUBE_APISERVER} \
  7.       --kubeconfig=kube-proxy.kubeconfig
  8. # 设置客户端认证参数
  9.     kubectl config set-credentials kube-proxy \
  10.       --client-certificate=/etc/kubernetes/ssl/kube-proxy.pem \
  11.       --client-key=/etc/kubernetes/ssl/kube-proxy-key.pem \
  12.       --embed-certs=true \
  13.       --kubeconfig=kube-proxy.kubeconfig
  14. # 设置上下文参数
  15.     kubectl config set-context default \
  16.       --cluster=kubernetes \
  17.       --user=kube-proxy \
  18.       --kubeconfig=kube-proxy.kubeconfig
  19. # 设置默认上下文
  20.     kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig
复制代码


    # 将两个 kubeconfig 文件分发到所有 Node 机器的 /etc/kubernetes/ 目录
  1. scp /etc/kubernetes/bootstrap.kubeconfig [email protected]:/etc/kubernetes/bootstrap.kubeconfig
  2. scp /etc/kubernetes/kube-proxy.kubeconfig [email protected]:/etc/kubernetes/kube-proxy.kubeconfig
  3. scp /etc/kubernetes/bootstrap.kubeconfig [email protected]:/etc/kubernetes/bootstrap.kubeconfig
  4. scp /etc/kubernetes/kube-proxy.kubeconfig [email protected]:/etc/kubernetes/kube-proxy.kubeconfig
复制代码


下一篇 :http://mjj.022333.xyz/thread-436852-1-1.html
2#
发表于 2018-3-12 21:30:37 | 只看该作者
前排滋瓷。紫薯布丁(
3#
发表于 2018-3-12 21:34:01 来自手机 | 只看该作者
十分感谢dalao发的有技术文章
4#
发表于 2018-3-12 21:46:58 来自手机 | 只看该作者
感谢分享,虽然不懂
6#
 楼主| 发表于 2018-3-12 22:28:28 | 只看该作者
摸鱼小熊猫 发表于 2018-3-12 22:16
我搞了一份基于ansible的k8s部署,除了手动关闭交换分区剩下全自动

还是要自己装下看看需要哪些组件每个是干啥的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2026-1-10 17:25 , Processed in 0.070646 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表