ドメイン「makdom.ddns.net」を介してアクセスできるdockerにプライベートレジストリを設定しました。ローカルログインから画像をプッシュしてインポートでき、スレーブkubesノードでも問題ありません。これを行うことができます。
ただし、kubes配布ファイルを作成すると、プライベートレジストリからイメージを取得できないため失敗します。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ssh-deployment
spec:
template:
metadata:
labels:
app: helloworld
spec:
containers:
- name: ssh-demo
image: makdom.ddns.net/my-ubuntu
imagePullPolicy: IfNotPresent
ports:
- name: nodejs-port
containerPort: 22
imagePullSecrets:
- name: myregistrykey
秘密:
DOCKER_REGISTRY_SERVER="https://makdom.ddns.net/v1/"
DOCKER_USER="user"
DOCKER_PASSWORD="password"
DOCKER_EMAIL="[email protected]"
kubectl create secret docker-registry myregistrykey \
--docker-server=$DOCKER_REGISTRY_SERVER \
--docker-username=$DOCKER_USER \
--docker-password=$DOCKER_PASSWORD \
--docker-email=$DOCKER_EMAIL
間違い:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 1m default-scheduler Successfully assigned ssh-deployment-7b7c7bf977-m6stk to kubes-slave
Normal SuccessfulMountVolume 1m kubelet, kubes-slave MountVolume.SetUp succeeded for volume "default-token-mx7qq"
Normal Pulled 1m (x3 over 1m) kubelet, kubes-slave Container image "makdom.ddns.net/my-ubuntu" already present on machine
Normal Created 1m (x3 over 1m) kubelet, kubes-slave Created container
Normal Started 1m (x3 over 1m) kubelet, kubes-slave Started container
Normal Pulling 34s (x2 over 1m) kubelet, kubes-slave pulling image "makdom.ddns.net/my-ubuntu"
Warning Failed 34s (x2 over 1m) kubelet, kubes-slave Failed to pull image "makdom.ddns.net/my-ubuntu": rpc error: code = Unknown desc = Error: image my-ubuntu:latest not found
Warning Failed 34s (x2 over 1m) kubelet, kubes-slave Error: ErrImagePull
Warning BackOff 19s (x6 over 1m) kubelet, kubes-slave Back-off restarting failed container
答え1
既知の問題https://github.com/kubernetes/kubernetes/issues/57427、マスターで解決https://github.com/kubernetes/kubernetes/pull/57463
1.9.1の修正https://github.com/kubernetes/kubernetes/pull/57472
以前の回避策:
プライベートレジストリに.dockerconfigjsonがすでに存在する場合は、タイプとデータキーを手動で指定できます。
kubectl create secret generic my-secret-name \
--type=kubernetes.io/dockerconfigjson \
--from-file .dockerconfigjson=/path/to/.dockerconfigjson
.dockerconfigjsonファイルがまだない場合は、kubectl create secret docker-registry
生成されたキーを手動で変更できます。
- 次へ追加
--dry-run -o yaml > secret.yaml
- タイプを
kubernetes.io/dockercfg
以下から変更してください。kubernetes.io/dockercfgjson
- データキーを
.dockercfg
以下から変更してください。.dockercfgjson
- 修正された秘密の作成
kubectl create -f secret.yaml