k8s默認使用gcr.io做爲鏡像倉庫,因爲網絡緣由沒法正常訪問,或者速度很是慢。我就使用了阿里雲docker,來建立本身的私有倉庫。html
阿里雲docker管理界面地址node
使用阿里雲加速訪問docker hub。訪問docker hub官方鏡像時進行網絡提速 docker
建立訪問阿里雲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
sudo docker pull node:10
以官方鏡像爲基礎網絡
先使用sudo docker images
,查看下載的node鏡像id,app
而後打一個新的tag. sudo docker tag 5a401340b79f registry.cn-hangzhou.aliyuncs.com/xxxxx/node:10
curl
最後推送到本身的阿里雲倉庫 sudo docker push registry.cn-hangzhou.aliyuncs.com/xxxxx/node:10
post
若是是私有倉庫,要保證已經docker登陸了阿里雲帳號,不然沒法推送ui
應用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的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
經過sudo kebectl describe pod helloworld
,獲得pod的狀態和運行在哪一個node,以及pod的容器ip。
在部署的node上,curl http://pod容器IP:8080
訪問,輸出 hello world
sudo kubectl describe pod helloworld
查看pod的狀態以及建立過程等信息
sudo kubect get no -o yaml
或者
sudo kubectl describe node xxx
查看node的健康檢查等信息