当前位置: 首页 > news >正文

网站建设开发技术天津网站开发维护者

网站建设开发技术天津,网站开发维护者,网站栏目类别是什么意思,做电脑网站手机能显示不出来一、背景 Master apiserver启用TLS认证后#xff0c;Node节点kubelet和kube-proxy要与kube-apiserver进行通信#xff0c;必须使用CA签发的有效证书才可以#xff0c;当Node节点很多时#xff0c;这种客户端证书颁发需要大量工作#xff0c;同样也会增加集群扩展复杂度。 …一、背景 Master apiserver启用TLS认证后Node节点kubelet和kube-proxy要与kube-apiserver进行通信必须使用CA签发的有效证书才可以当Node节点很多时这种客户端证书颁发需要大量工作同样也会增加集群扩展复杂度。 为了简化流程Kubernetes引入了TLS bootstraping机制来自动颁发客户端证书kubelet会以一个低权限用户自动向apiserver申请证书kubelet的证书由apiserver动态签署。 所以强烈建议在Node上使用这种方式目前主要用于kubeletkube-proxy还是由我们统一颁发一个证书。当机器越来越多的时候手动的为kubelet颁发证书还是比较麻烦的应用这个机制就是为自动的为kubelet颁发证书 TLS bootstrapping使用Token时整个引导过程 1、在集群内创建特定和Bootstrap Token Secret或者创建token.csv内置用户声明文件 2、在集群内创建首次TLS Bootstrap申请证书的ClusterRole后续renew kubelet client/server的ClusterROle以及相关对应的ClusterROleBinding并绑定到对应的组或用户 3、调整Controller Manager配置使其能自动签发相关证书和自动清理过期的TLS Bootstrapping Token 4、生成特定的包含TLS Bootstrapping Token的bootstrap.kubeconfig以供kubelet启动时使用 5、调整Kubelet配置使其首次启动加载bootstrap.kubeconfig并使用其中的 TLS Bootstrapping Token完成首次证书申请 6、证书被Controller Manager签署成功下发Kubelet 自动重载完成引导流程 7、后续Kubelet自动 renew相关证书 二、kubelet配置TLS客户端证书启动引导 2.1、启动引导认证 2.1.1、方法一基于令牌认证文件 1、如果你希望使用令牌认证文件你必须在kube-apiserver上使用下面的标志启用之 --token-auth-file/etc/kubernetes/pki/token.csv2、创建令牌认证文件并复制到 master节点的/etc/kubernetes/pki目录下 export bootstrap_token$(head -c 6 /dev/urandom | md5sum |head -c 6).$(head -c 16 /dev/urandom | md5sum | head -c 16) echo $bootstrap_token,kubelet-bootstrap,10001,\system:bootstrappers\ token.csv cp token.csv /etc/kubernetes/pki3、生成bootstrap.kubeconfig凭证文件并复制到 master节点 和 worker节点的 /etc/kubernetes目录下 export kube_api_server192.168.1.65:6443 kubectl config --kubeconfigkubelet-bootstrap.kubeconfig set-cluster kubernetes --serverhttps://${kube_api_server} --certificate-authorityca.pem --embed-certstrue kubectl config --kubeconfigkubelet-bootstrap.kubeconfig set-credentials kubelet-bootstrap --token$bootstrap_token kubectl config --kubeconfigkubelet-bootstrap.kubeconfig set-context bootstrap --userkubelet-bootstrap --clusterkubernetes kubectl config --kubeconfigkubelet-bootstrap.kubeconfig use-context bootstrap cp kubelet-bootstrap.kubeconfig /etc/kubernetes总结 1、kubelet首次启动通过加载kubelet-bootstrap.kubeconfig文件中定义的用户token和apiserver CA证书发起CSR请求这个token被预先内置在apiserver节点的token.csv文件中其身份为kubelet-bootstrap用户和system:bootstrappers用户组。想要首次CSR请求成功则还需要将kubelet-bootstrap用户和system:bootstrappers用户组与内置的ClusterRole绑定。对于CSR请求可以手动签发也可以将system:bootstrappers用户组与ClusterRole system:certificates.k8s.io:certificatesigningrequests:nodeclient绑定实现自动签发。 2、默认签署的证书只有1年有效期如果想要调整证书的有效期可以通过设置 kube-controller-manager 的 --experimental-cluster-signing-duration 参数实现该参数默认值为 8760h0m0s。 2.2.2、方法二基于启动引导令牌Bootstrap Token 启动引导令牌在Kubernetes集群中存储为Secret对象被发放给各个kubelet。 你可以在整个集群中使用同一个令牌也可以为每个节点发放单独的令牌。 1、如果你希望使用启动引导令牌你必须在kube-apiserver上使用下面的标志启用之 --enable-bootstrap-token-authtrue2、随机生成Token ID和Token Secret c3047frootk8s-master-65:~# export token_idhead -c 6 /dev/urandom | md5sum |head -c 6 rootk8s-master-65:~# echo $token_id e9a59brootk8s-master-65:~# export token_secrethead -c 16 /dev/urandom | md5sum | head -c 16 rootk8s-master-65:~# echo $token_secret b5490ff78e038ba12、创建bootstrap-token.yaml启动引导令牌文件 启动引导令牌使用 abcdef.0123456789abcdef 的形式。 更加规范地说它们必须符合正则表达式 [a-z0-9]{6}.[a-z0-9]{16}。令牌的第一部分是 “Token ID”它是一种公开信息用于引用令牌并确保不会 泄露认证所使用的秘密信息。 第二部分是“令牌秘密Token Secret”它应该被共享给受信的第三方。 #1、创建bootstrap-token.yaml文件 vim bootstrap-secret.yaml apiVersion: v1 kind: Secret metadata:name: bootstrap-token-e9a59bnamespace: kube-system type: bootstrap.kubernetes.io/token stringData:token-id: e9a59btoken-secret: b5490ff78e038ba1usage-bootstrap-authentication: trueusage-bootstrap-signing: trueauth-extra-groups: system:bootstrappers:worker,system:bootstrappers:ingress# 2、执行yaml文件 kubectl apply -f bootstrap-token.yaml3、生成bootstrap.kubeconfig凭证文件并复制到 master节点 和 worker节点的 /etc/kubernetes目录下 export kube_api_server192.168.1.65:6443 kubectl config --kubeconfigkubelet-bootstrap.kubeconfig set-cluster kubernetes --serverhttps://${kube_api_server} --certificate-authorityca.pem --embed-certstrue kubectl config --kubeconfigkubelet-bootstrap.kubeconfig set-credentials system:bootstrap:e9a59b --tokene9a59b.b5490ff78e038ba1 kubectl config --kubeconfigkubelet-bootstrap.kubeconfig set-context bootstrap --usersystem:bootstrap:e9a59b --clusterkubernetes kubectl config --kubeconfigkubelet-bootstrap.kubeconfig use-context bootstrap cp kubelet-bootstrap.kubeconfig /etc/kubernetes2.3、授权 kubelet 创建 CSR 现在启动引导节点被身份认证 为system:bootstrapping组的成员 它需要被授权创建证书签名请求CSR并在证书被签名之后将其取回。 幸运的是Kubernetes提供了一个ClusterRole其中精确地封装了这些许可 system:node-bootstrapper。 为了实现这一点你只需要创建ClusterRoleBinding将system:bootstrappers组绑定到集群角色system:node-bootstrapper。 这时候kubelet还无法加入集群因为kubelet还没有客户端证书无法正常的连接kube-apiserver。默认Kubernetes是不允许kubelet申请证书的需要手动授权才行。 #1、创建create-csrs-for-bootstrapping.yaml文件 vim create-csrs-for-bootstrapping.yaml # 允许启动引导节点创建CSR apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata:name: create-csrs-for-bootstrapping subjects: - kind: Groupname: system:bootstrappersapiGroup: rbac.authorization.k8s.io roleRef:kind: ClusterRolename: system:node-bootstrapperapiGroup: rbac.authorization.k8s.io#2、执行yaml文件 kubectl apply -f create-csrs-for-bootstrapping.yaml 2.4、自动批准kubelet证书 说明申请下来的证书是 kubelet用于访问kube-apiserver。 # 1、创建auto-approve-csrs-for-group.yaml文件 vim auto-approve-csrs-for-group.yaml # 批复 system:bootstrappers 组的所有 CSR apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata:name: auto-approve-csrs-for-group subjects: - kind: Groupname: system:bootstrappersapiGroup: rbac.authorization.k8s.io roleRef:kind: ClusterRolename: system:certificates.k8s.io:certificatesigningrequests:nodeclientapiGroup: rbac.authorization.k8s.io#2、执行yaml文件 kubectl apply -f auto-approve-csrs-for-group.yaml2.5、自动续签kubelet证书 说明证书即将过期时可以续签之前申请下来的证书也是kubelet用于访问kube-apiserver。 #1、创建auto-approve-renewals-for-nodes.yaml文件 vim auto-approve-renewals-for-nodes.yaml # 批复system:nodes组的CSR续约请求 apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata:name: auto-approve-renewals-for-nodes subjects: - kind: Groupname: system:nodesapiGroup: rbac.authorization.k8s.io roleRef:kind: ClusterRolename: system:certificates.k8s.io:certificatesigningrequests:selfnodeclientapiGroup: rbac.authorization.k8s.io#2、执行yaml文件 kubectl apply -f auto-approve-renewals-for-nodes.yaml 2.6、创建服务启动文件 创建/etc/systemd/system/kubelet.service服务启动文件 vim /etc/systemd/system/kubelet.service [Unit] DescriptionKubernetes Kubelet Documentationhttps://github.com/kubernetes/kubernetes Aftercontainerd.service Requirescontainerd.service[Service] ExecStart/usr/local/bin/kubelet \--bootstrap-kubeconfig/etc/kubernetes/kubelet-bootstrap.kubeconfig \--kubeconfig/var/lib/kubelet/kubelet.kubeconfig \--config/var/lib/kubelet/kubelet-config.yaml \--container-runtimeremote \--runtime-request-timeout15m \--container-runtime-endpointunix:///run/containerd/containerd.sock \--cgroup-driversystemd \--pod-infra-container-imageregistry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7[Install] WantedBymulti-user.target字段解释 --bootstrap-kubeconfig首次启动向apiserver申请证书 --kubeconfig空路径会自动生成后面用于连接apiserver --config配置参数文件 --pod-infra-container-image管理Pod网络容器的镜像总结整理不易如果对你有帮助可否点赞关注一下 更多详细内容请参考企业级K8s集群运维实战
http://www.hyszgw.com/news/126198/

相关文章:

  • 做网站诊断步骤网站开发课程的建议
  • 长锦船公司网站北京建设部网站首页
  • 网站空间后台密码泉州优化公司
  • 哪些网站做任务可以赚钱的wordpress允许爬取
  • 网站数据流程开发定制电商平台
  • 成都网站建设公司兴田德润在哪儿阿里云 wordpress 404
  • 做微商推广有哪些好的分类信息网站91号卡分销平台
  • 大型网站开发人员网站建设绩效考核方案ppt
  • 建设部建造师强制注销网站南通网站排名团队
  • 如何在图片上做网站水印图网站开发流程需要用到的语言
  • 网站制作网站建设项目规划书53建筑人才网
  • 建筑工程网人才网网站建设与优化
  • 班级网站设计论文舟山建设管理网站
  • 文化公司网站建设做游戏视频网站用什么程序好
  • 网站获取访客qq 原理如何在wordpress中添加背景音乐? |
  • dede网站架设教程四大商业网站
  • 杭州建站平台河南监理建设协会网站
  • 网站集约化建设管理网站翻新后seo怎么做
  • 怎样做企业网站备案亚马逊跨境电商app
  • 网站建设的重点难点常用网站域名
  • 子网站 两微一端的建设方案公司网络维护是做什么的
  • 怎么样做团购网站小时seo百度关键词点击器
  • 昌做网站使用wordpress rss
  • 手机软件网站长沙移动网站建设哪家好
  • 织梦做的网站前面有不安全电子商务系统设计报告
  • 怎样选择网站建设城市网站建设
  • dw表格怎么做网站搜索app 制作
  • 南沙定制型网站建设网站开发所用到的技术
  • 怎么做网站教程视频vs2017网站开发
  • 网站管理公司排名天津网页制作网页报价