Kubernetes使用阿里雲docker

背景

k8s默認使用gcr.io做爲鏡像倉庫,因爲網絡緣由沒法正常訪問,或者速度很是慢。我就使用了阿里雲docker,來建立本身的私有倉庫。html

申請阿里雲帳號

阿里雲docker管理界面地址node

docker hub加速

使用阿里雲加速訪問docker hub。訪問docker hub官方鏡像時進行網絡提速 docker

建立命名空間

k8s建立secret

建立訪問阿里雲docker的secret對象,這裏是阿里雲docker的帳號密碼api

ALI_DOCKER_REGISTRY_SERVER=https://registry.cn-hangzhou.aliyuncs.com/
ALI_DOCKER_USER=登錄阿里雲docker的用戶名
ALI_DOCKER_EMAIL=登錄阿里雲docker的email
ALI_DOCKER_PASSWORD=登錄阿里雲docker的密碼
kubectl create secret docker-registry aliyun-docker \
  --docker-server=$ALI_DOCKER_REGISTRY_SERVER \
  --docker-username=$ALI_DOCKER_USER \
  --docker-password=$ALI_DOCKER_PASSWORD \
  --docker-email=$ALI_DOCKER_EMAIL

鏡像製做

獲取node官方鏡像

sudo docker pull node:10 以官方鏡像爲基礎網絡

將官方鏡像推到本身倉庫

先使用sudo docker images,查看下載的node鏡像id,app

而後打一個新的tag. sudo docker tag 5a401340b79f registry.cn-hangzhou.aliyuncs.com/xxxxx/node:10curl

最後推送到本身的阿里雲倉庫 sudo docker push registry.cn-hangzhou.aliyuncs.com/xxxxx/node:10post

若是是私有倉庫,要保證已經docker登陸了阿里雲帳號,不然沒法推送ui

製做本身的node應用鏡像

應用dockerfile內容以下阿里雲

FROM registry.cn-hangzhou.aliyuncs.com/xxxxx/node:10
EXPOSE 8080
COPY server.js .
CMD node server.js

應用server.js內容以下

var http = require('http');
var handleRequest = function(request, response) {
  console.log('Received request for URL: ' + request.url);
  response.writeHead(200);
  response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(8080);

構建應用鏡像

sudo docker build --tag registry.cn-hangzhou.aliyuncs.com/xxxxx/hello_world:v0.1 ./

上傳到阿里雲倉庫

sudo docker push registry.cn-hangzhou.aliyuncs.com/xxxxx/hello_world:v0.1

pod容器使用secret

建立pod

pod的yaml內容以下:

apiVersion: v1
kind: Pod
metadata:
  name: helloworld
  labels:
    app: helloworld
spec:
  containers:
    - name: helloworld
      image: registry.cn-hangzhou.aliyuncs.com/xxxxx/hello_world:v0.1
      imagePullPolicy: Always
      ports:
        - containerPort: 8080
  imagePullSecrets:
    - name: aliyun-docker

建立pod,sudo kubectl apply -f helloworld.yaml

訪問pod

經過sudo kebectl describe pod helloworld,獲得pod的狀態和運行在哪一個node,以及pod的容器ip。

在部署的node上,curl http://pod容器IP:8080訪問,輸出 hello world

問題診斷

pod狀態

sudo kubectl describe pod helloworld

查看pod的狀態以及建立過程等信息

node診斷

sudo kubect get no -o yaml

或者

sudo kubectl describe node xxx

查看node的健康檢查等信息

參考資料

阿里雲docker hub 拉取私有倉庫鏡像

相關文章
相關標籤/搜索