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

网站建设会议通知今日新闻十大头条内容

网站建设会议通知,今日新闻十大头条内容,客户管理系统 wordpress,合肥蜀山网站开发一、背景 Master apiserver启用TLS认证后,Node节点kubelet和kube-proxy要与kube-apiserver进行通信,必须使用CA签发的有效证书才可以,当Node节点很多时,这种客户端证书颁发需要大量工作,同样也会增加集群扩展复杂度。 …

一、背景

Master apiserver启用TLS认证后,Node节点kubelet和kube-proxy要与kube-apiserver进行通信,必须使用CA签发的有效证书才可以,当Node节点很多时,这种客户端证书颁发需要大量工作,同样也会增加集群扩展复杂度。

为了简化流程,Kubernetes引入了TLS bootstraping机制来自动颁发客户端证书,kubelet会以一个低权限用户自动向apiserver申请证书,kubelet的证书由apiserver动态签署。

所以强烈建议在Node上使用这种方式,目前主要用于kubelet,kube-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.csv

2、创建令牌认证文件并复制到 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/pki

3、生成bootstrap.kubeconfig凭证文件并复制到 master节点 和 worker节点的 /etc/kubernetes目录下

export kube_api_server="192.168.1.65:6443"
kubectl config --kubeconfig=kubelet-bootstrap.kubeconfig set-cluster kubernetes --server=https://${kube_api_server} --certificate-authority=ca.pem --embed-certs=true
kubectl config --kubeconfig=kubelet-bootstrap.kubeconfig set-credentials kubelet-bootstrap --token="$bootstrap_token"
kubectl config --kubeconfig=kubelet-bootstrap.kubeconfig set-context bootstrap --user=kubelet-bootstrap --cluster=kubernetes 
kubectl config --kubeconfig=kubelet-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-auth=true

2、随机生成Token ID和Token Secret

c3047froot@k8s-master-65:~# export token_id=`head -c 6 /dev/urandom | md5sum |head -c 6`
root@k8s-master-65:~# echo $token_id
e9a59broot@k8s-master-65:~# export token_secret=`head -c 16 /dev/urandom | md5sum | head -c 16`
root@k8s-master-65:~# echo $token_secret
b5490ff78e038ba1

2、创建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: "true"usage-bootstrap-signing: "true"auth-extra-groups: system:bootstrappers:worker,system:bootstrappers:ingress# 2、执行yaml文件
kubectl apply -f bootstrap-token.yaml

3、生成bootstrap.kubeconfig凭证文件并复制到 master节点 和 worker节点的 /etc/kubernetes目录下

export kube_api_server="192.168.1.65:6443"
kubectl config --kubeconfig=kubelet-bootstrap.kubeconfig set-cluster kubernetes --server=https://${kube_api_server} --certificate-authority=ca.pem --embed-certs=true
kubectl config --kubeconfig=kubelet-bootstrap.kubeconfig set-credentials system:bootstrap:e9a59b --token=e9a59b.b5490ff78e038ba1
kubectl config --kubeconfig=kubelet-bootstrap.kubeconfig set-context bootstrap --user=system:bootstrap:e9a59b --cluster=kubernetes 
kubectl config --kubeconfig=kubelet-bootstrap.kubeconfig use-context bootstrap
cp kubelet-bootstrap.kubeconfig /etc/kubernetes

2.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.yaml

2.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]
Description=Kubernetes Kubelet
Documentation=https://github.com/kubernetes/kubernetes
After=containerd.service
Requires=containerd.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-runtime=remote \--runtime-request-timeout=15m \--container-runtime-endpoint=unix:///run/containerd/containerd.sock \--cgroup-driver=systemd \--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7[Install]
WantedBy=multi-user.target

字段解释:

--bootstrap-kubeconfig:首次启动向apiserver申请证书
--kubeconfig:空路径,会自动生成,后面用于连接apiserver
--config:配置参数文件
--pod-infra-container-image:管理Pod网络容器的镜像

总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:企业级K8s集群运维实战

http://www.15wanjia.com/news/40541.html

相关文章:

  • 无锡网站建设技术外包谷歌chrome浏览器官方下载
  • 招商网站建设多少钱seo搜索引擎优化工具
  • 公司电商网站建设方案短视频运营
  • 空白的网站怎么建设危机公关
  • 做网站 设备百度竞价关键词价格查询
  • 营销型网站五大系统 单仁软文推广收费
  • 广南网站制作青岛网站seo优化
  • 怎么做网站美工重庆营销型网站建设公司
  • wordpress主题模板教程网站关键词排名手机优化软件
  • 站点-将网站添加到区域变灰色无法添加如何解决seo搜索引擎优化怎么优化
  • 热点新闻素材全网优化哪家好
  • 怎样做知道网站外贸如何推广
  • 重庆荣昌网站建设费用淘宝seo优化
  • 网络推广有几种方法seo是什么意思为什么要做seo
  • 哈尔滨最专业的网站建设免费b站推广网站不
  • 网站制作的要求平面设计
  • 国际顶尖设计公司赣州seo外包
  • wordpress应用镜像网络seo营销推广
  • aspnet东莞网站建设男生技能培训班有哪些
  • 虚拟主机 网站镜像对网站和网页的认识
  • 营销型网站效果不好游戏推广公司好做吗
  • 新网站外链怎么做北京百度网站排名优化
  • 网站策划书的内涵电商培训机构靠谱吗
  • o2o商城网站制作百度识图 上传图片
  • 有域名后怎么建网站找客户的软件有哪些
  • 做设计灵感的网站奖券世界推广网站
  • 网站建设与管理 自考人工智能培训班
  • 深圳万齐网站建设ui设计
  • 520高清网站三级黄色软件男女做百度客户服务电话
  • icp网站备案流程营销网站方案设计