k8s中使用私有镜像仓库

kube-apiserver启动参数:

--advertise-address=192.168.x.x
--allow-privileged=true
--apiserver-count=1   #集群中apiserver的数量,--endpoint-reconciler-type=master-count时有效
--authorization-mode=Node,RBAC
--client-ca-file=/etc/kubernetes/pki/ca.crt
--enable-admission-plugins=NodeRestriction,MutatingAdmissionWebhook
--enable-bootstrap-token-auth=true
--etcd-servers=http://localhost:2379
--insecure-port=0
--kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
--kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
--kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
--proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
--proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
--requestheader-allowed-names=front-proxy-client        #客户端证书通用名称列表,允许在由——requestheader-username-headers指定的标头中提供用户名。如果为空,则允许使用在——requestheader-client-ca-file中验证的任何客户端证书。
--requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
--requestheader-extra-headers-prefix=X-Remote-Extra-        #要检查的请求头前缀列表。X-Remote-Extra-  建议
--requestheader-group-headers=X-Remote-Group        #用于检查组的请求头列表。X-Remote-Group建议
--requestheader-username-headers=X-Remote-User      #用于检查用户名的请求头列表,X-Remote-User是常见的。
--secure-port=6443
--service-account-key-file=/etc/kubernetes/pki/sa.pub
--service-cluster-ip-range=10.96.0.0/12
--service-node-port-range=30000-31000
--tls-cert-file=/etc/kubernetes/pki/apiserver.crt
--tls-private-key-file=/etc/kubernetes/pki/apiserver.key
--v=2
--feature-gates=TTLAfterFinished=true
--encryption-provider-config=/etc/kubernetes/pki/encryption.conf

pod使用私有镜像仓库的几种方法:

  1. 创建docker-registry类型的secret
  • 使用dockerconfig文件创建
① 登录 docker 私有镜像仓库后,家目录中生成docker的配置文件,其中包含仓库及认证信息
#docker login docker-hub:5000    
#cat ~/.docker/config.json 
{
	"auths": {
		"hub.intra.mlamp.cn": {
			"auth": "xxxxxxx"    # username:password  做base64
		}
	}
}
② 通过 docker 配置文件创建 secret 
#kubectl create secret generic <secret-name> \
    --from-file=.dockerconfigjson=<path/to/.docker/config.json> \
    --type=kubernetes.io/dockerconfigjson
#kubectl get secret <secret-name> -oyaml
apiVersion: v1
data:
  .dockerconfigjson: xxxxxx
kind: Secret
metadata:
  name: hub-sec
type: kubernetes.io/dockerconfigjson
  • 通过命令行方式创建
kubectl create secret docker-registry <secret-name> --docker-server=docker-hub:5000 --docker-username=admin --docker-password=admin --docker-email=xxx@hub.com
  1. pod的定义文件中通过imagePullSecrets参数指定步骤1中的secret
spec:
  ...
  imagePullSecrets:
  - name: hub-sec

posted @ 2021-03-11 10:14  夜下听雨  阅读(146)  评论(0)    收藏  举报