1.必要条件
1.1 harbor 仓库安装完成
1.2 kubernetes 的kube-apiservce 服务启动时参数要有SecurityContextDeny,ServiceAccount两个参数
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
1.3 使用docker login 命令登录你的harbor仓库可以成功,如下图:
2.配置
Generate a signing key:
openssl genrsa -out /tmp/serviceaccount.key 2048
Update /etc/kubernetes/apiserver:
KUBE_API_ARGS="--service_account_key_file=/tmp/serviceaccount.key"
Update /etc/kubernetes/controller-manager:
KUBE_CONTROLLER_MANAGER_ARGS="--service_account_private_key_file=/tmp/serviceaccount.key
- restart service
service kube-apiserver restart
service kube-controller-manager restart
5.执行以下命令你可以看到
kubectl get sa
kubectl describe sa default
黑色的初始是没有的,只用 default-token-rr4qc 执行下面的命令后 Images pull secrets:myregistrykey会出现
kubectl create secret docker-registry myregistrykey --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
6.编辑pod文件加入参数如下图
7.执行命令
kubectl create -f eureka-pod1.yml
kubectl get pods
可以从Harbor 仓库中 pull 镜像了。
参考链接:
https://github.com/kubernetes/kubernetes/issues/11355#issuecomment-127378691
http://dockone.io/article/1737