CKA-kubernetes 部署-hard-way-1.4-1.5

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

本篇为deploy kubernete hard way的第2篇,如果想从头操作或者了解此过程参照 CKA-kubernetes 部署-hard-way-1.1-1.3。 在上述文章中完成了VMs的部署,下面进行kubernetes config文件的配置,包含了controller manager, kube-proxy, scheduler clients and the admin user 组件或者角色。


提示:以下是本篇文章正文内容,下面案例可供参考

1.4 Generating Kubernetes Configuration Files for Authentication

this part will generate kubeconfig files for the controller manager, kube-proxy, scheduler clients and the admin user.借助配置文件,k8s的不同组件之间的访问就不需要在命令后面跟上certifiacte 以及key的文件路径。

  • kube-proxy
    配置文件分为3个部分,cluster、client、context,其中cluster部分定义关于clauster的CA,server的ip:port,以及写入的配置文件名称;
    client 为访问上述server的客户端,定义包含了访问需要的crt文件和private key以及写入的配置文件名称;context,链接起cluster与client,即定义client与cluster的相互关系。
{

  kubectl config set-cluster kubernetes-the-hard-way \
    --certificate-authority=ca.crt \
    --embed-certs=true \
    --server=https://${LOADBALANCER_ADDRESS}:6443 \
    --kubeconfig=kube-proxy.kubeconfig

  kubectl config set-credentials system:kube-proxy \
    --client-certificate=kube-proxy.crt \
    --client-key=kube-proxy.key \
    --embed-certs=true \
    --kubeconfig=kube-proxy.kubeconfig

  kubectl config set-context default \
    --cluster=kubernetes-the-hard-way \
    --user=system:kube-proxy \
    --kubeconfig=kube-proxy.kubeconfig
##生成配置文件,kube-proxy.kubeconfig
  kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig
}
  • kube-controller-manager Kubernetes Configuration File
{
  kubectl config set-cluster kubernetes-the-hard-way \
    --certificate-authority=ca.crt \
    --embed-certs=true \
    --server=https://127.0.0.1:6443 \
    --kubeconfig=kube-controller-manager.kubeconfig

  kubectl config set-credentials system:kube-controller-manager \
    --client-certificate=kube-controller-manager.crt \
    --client-key=kube-controller-manager.key \
    --embed-certs=true \
    --kubeconfig=kube-controller-manager.kubeconfig

  kubectl config set-context default \
    --cluster=kubernetes-the-hard-way \
    --user=system:kube-controller-manager \
    --kubeconfig=kube-controller-manager.kubeconfig

  kubectl config use-context default --kubeconfig=kube-controller-manager.kubeconfig
}

  • kube-scheduler Kubernetes Configuration File
{
  kubectl config set-cluster kubernetes-the-hard-way \
    --certificate-authority=ca.crt \
    --embed-certs=true \
    --server=https://127.0.0.1:6443 \
    --kubeconfig=kube-scheduler.kubeconfig

  kubectl config set-credentials system:kube-scheduler \
    --client-certificate=kube-scheduler.crt \
    --client-key=kube-scheduler.key \
    --embed-certs=true \
    --kubeconfig=kube-scheduler.kubeconfig

  kubectl config set-context default \
    --cluster=kubernetes-the-hard-way \
    --user=system:kube-scheduler \
    --kubeconfig=kube-scheduler.kubeconfig

  kubectl config use-context default --kubeconfig=kube-scheduler.kubeconfig
}
  • admin Kubernetes Configuration File
{
  kubectl config set-cluster kubernetes-the-hard-way \
    --certificate-authority=ca.crt \
    --embed-certs=true \
    --server=https://127.0.0.1:6443 \
    --kubeconfig=admin.kubeconfig

  kubectl config set-credentials admin \
    --client-certificate=admin.crt \
    --client-key=admin.key \
    --embed-certs=true \
    --kubeconfig=admin.kubeconfig

  kubectl config set-context default \
    --cluster=kubernetes-the-hard-way \
    --user=admin \
    --kubeconfig=admin.kubeconfig

  kubectl config use-context default --kubeconfig=admin.kubeconfig
}
  • Distribute the Kubernetes Configuration Files
  1. 把kube-proxy拷贝到worker node
for instance in worker-1 worker-2; do
  scp kube-proxy.kubeconfig ${instance}:~/
done
  1. 像 admin.kubeconfig, kube-controller-manager and kube-scheduler kubeconfig files,拷贝到 master node。
for instance in master-1 master-2; do
  scp admin.kubeconfig kube-controller-manager.kubeconfig kube-scheduler.kubeconfig ${instance}:~/
done

ps:上述配置文件来自kubernetes-hard-way

1.5 Generating the Data Encryption Config and Key

##Encryption key
ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64)
cat > encryption-config.yaml <<EOF
kind: EncryptionConfig
apiVersion: v1
resources:
  - resources:
      - secrets
    providers:
      - aescbc:
          keys:
            - name: key1
              secret: ${ENCRYPTION_KEY}
      - identity: {}
EOF
##拷贝生成config文件到master-1和master-2
for instance in master-1 master-2; do
  scp encryption-config.yaml ${instance}:~/
done
#移动config文件到合适的文件位置,
#如果提示不存在路径,可以手动生成/var/lib/kubernetes/ 路径
for instance in master-1 master-2; do
  ssh ${instance} sudo mv encryption-config.yaml /var/lib/kubernetes/
done

总结

综上,通过上述的命令,完成了相关组件TLS配置文件,一共生成了kube-proxy,kube-admin,kube-controller-manager,kube-scheduler的配置文件,并把这些配置文件分散到不同的nodes中去。在1.5中分布了加密配置文件,用做将来生成Secret object。下一篇。将进入部署K8的不同组件部分包含了etcd,controller manger等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值