阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

kubernetes集群配置serviceaccount

122次阅读
没有评论

共计 2542 个字符,预计需要花费 7 分钟才能阅读完成。

Kubernetes API 的其它服务。Service Account 它并不是给 kubernetes 集群的用户使用的,而是给 pod 里面的进程使用的,它为 pod 提供必要的身份认证。

Kubernetes 提供了 Secret 来处理敏感信息,目前 Secret 的类型有 3 种:
Opaque(default): 任意字符串 
kubernetes.io/service-account-token: 作用于 ServiceAccount
kubernetes.io/dockercfg: 作用于 Docker registry,用户下载 docker 镜像认证使用。

本文将介绍在 kubernetes 集群中配置 serviceaccount 和 secret,可以让 kubernetes 使用私有仓库,并支持 nginx basic 认证。由于我们采用的是 rpm 包方式安装的 kubernetes 集群,默认没有 ca.crt、kubecfg.crt kubecfg.key、server.cert、server.key 这些文件,需要下载源码生成。

一、使用工具生成 key 文件

# mkdir git
# cd git/
# git clone https://github.com/kubernetes/kubernetes

科学上网方式下载 easy-rsa.tar.gz,下载地址在 make-ca-cert.sh 脚本中可以找到,将文件放到~/kube 目录下

# ls ~/kube
easy-rsa.tar.gz
# cd /root/git/kubernetes/
# sh cluster/CentOS/make-ca-cert.sh 192.168.115.5
# ls /srv/kubernetes/
ca.crt  kubecfg.crt  kubecfg.key  server.cert  server.key
# chown -R kube:kube /srv/kubernetes/*

将这些文件发送到 vm2 主机的相同目录

# chown -R kube:kube /srv/kubernetes/*
# scp -rp /srv/ root@vm2:/

二、修改配置文件

# grep -v ‘^#’ /etc/kubernetes/apiserver |grep -v ‘^$’
KUBE_API_ADDRESS=”–insecure-bind-address=192.168.115.5″
KUBE_ETCD_SERVERS=”–etcd-servers=http://192.168.115.5:2379″
KUBE_SERVICE_ADDRESSES=”–service-cluster-ip-range=10.254.0.0/16″
KUBE_ADMISSION_CONTROL=”–admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ServiceAccount,SecurityContextDeny,ResourceQuota”
KUBE_API_ARGS=”–storage-backend=etcd2 –secure-port=6443 –client-ca-file=/srv/kubernetes/ca.crt –tls-cert-file=/srv/kubernetes/server.cert –tls-private-key-file=/srv/kubernetes/server.key”# grep -v ‘^#’ /etc/kubernetes/controller-manager |grep -v ‘^$’
KUBE_CONTROLLER_MANAGER_ARGS=”–root-ca-file=/srv/kubernetes/ca.crt –service-account-private-key-file=/srv/kubernetes/server.key”

三、重启相关服务

Master:
# systemctl restart kube-apiserver
# systemctl restart kube-controller-manager
# systemctl restart kube-scheduler

Slave:
# systemctl restart kubelet
# systemctl restart kube-proxy

# kubectl get secret   
# kubectl describe secret default-token-6pddn

kubernetes 集群配置 serviceaccount

四、通过配置 secret,让 kubernetes 可以从私有仓库中拉取镜像

# kubectl create secret docker-registry regsecret \
–docker-server=registry.fjhb.cn  \
–docker-username=ylw \
 –docker-password=123 \
 –docker-email=ylw@fjhb.cn

kubernetes 集群配置 serviceaccount
在 yaml 文件 sepc 节加入 imagePullSecrets,指定使用创建好的 secret
kubernetes 集群配置 serviceaccount

# kubectl create -f frontend-controller.yaml

通过参考 kubernetes 的官方文档,并不能解决实际问题
https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

kubernetes 集群配置 serviceaccount

nginx 日志依然报 401 认证错误
kubernetes 集群配置 serviceaccount

我们知道使用 docker pull 去私有仓库拉取镜像,需要先使用 docker login 登陆一下私有仓库,而 login 执行的操作,实际上就是在用户的家目录写入了.docker/config.json 文件。将此文件做一个软链接到 /var/lib/kubelet/.docker/ 就可以解决此问题了。当配置了软连接后就不需要在 yaml 文件中引用前面的创建的 secret 了。

# cat /root/.docker/config.json
# ln -s /root/.docker/ /var/lib/kubelet/.docker/

kubernetes 集群配置 serviceaccount

# kubectl create -f frontend-controller.yaml

kubernetes 集群配置 serviceaccount

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计2542字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中