# k8s ### docker 使用minikube需要指定driver(??driver扮演的角色??),可以使用docker作為minikube的driver ubuntu上安裝docker sudo apt-get install docker.io 將使用者(自己)加到docker group sudo usermod -aG docker $USER 重新登入(重開機) #### 常用指令 * 檢查狀態 `service docker status` * 查看 Docker 的版本資訊 `docker version` * 尋找自己需要的 container 映像檔 `docker search ubuntu` * 下載 container 映像檔 `docker pull ubuntu` * 列出所有的 container 映像檔 `docker images` * 查看所有正在執行的 container `docker ps` * 列出image `docker images` * 刪除image `docker rmi <image ID>` * 列出container `docker ps` * 刪除container `docker rm <container ID>` * 刪除無用image `docker image prune` * 停止所有的 containers `docker stop $(docker ps -a -q)` * 刪除所有的 containers `docker rm $(docker ps -a -q)` * 刪除所有的 images `docker rmi $(docker images -a -q)` ### minikube Minikube是一套用來本地端開發使用的工具,能夠建立單節點Kubernetes cluster 開始minikube minikube start --driver=docker 結束minikube minikube stop #### 常用指令 * 檢查版本 `minikube version` * 檢查狀態 `minikube status` ### kubectl kubectl是一套命令行工具用來控制Kubernetes cluster(有cluster才有辦法使用) #### 常用指令 kubectl get pods -A #可以顯示更多資訊 kubectl get pods kubectl describe pods ## issue * ImagePullBackOff * http: server gave HTTP response to HTTPS client 修改/etc/docker/daemon.json,加入host:port ``` { "live-restore": true, "group": "dockerroot", "insecure-registries": ["10.10.0.113:32000","10.10.0.113:31000"] } ``` 修改後要重啟docker `sudo service docker restart` Ref: https://stackoverflow.com/questions/49674004/docker-repository-server-gave-http-response-to-https-client ### 場域一build成docker image並跑起來 1. 撰寫Dockerfile (參考: https://ithelp.ithome.com.tw/articles/10192519) 在與app.js同一層的資料夾新增Dockerfile ``` FROM node:16.14.0 ENV NODE_ENV=production WORKDIR /app COPY ["package.json", "package-lock.json*", "./"] RUN npm install --production COPY . . EXPOSE 8001 //好像沒啥用 CMD npm start ``` 2. [optional] 撰寫.dockerignore ``` node_modules ``` 3. 建立docker image ``` sudo docker build --tag scenario1 . ``` 4. 修改image tag 為了要上傳到docker hub因此需要將tag修改成與hub上相同的namespae ``` sudo docker tag scenario1 tmchen30/scenario1 ``` 5. 上傳到docker hub 在本地端登入docker hub後 (docker login)上傳就完成了 ``` sudo docker push tmchen30/scenario1 ``` 6. 測試 因為有放在docker hub 而且設為公開,所以可以直接使用docker pull取得image ``` docker pull tmchen30/scenario1 ``` 將服務跑起來( port為3000 ) ``` docker run -it -p 3000:3000 tmchen30/scenario1 ``` # kubeadm 重置 1. kubeadm reset 2. 刪除資料夾 .kube network setting https://docs.tigera.io/calico/latest/getting-started/kubernetes/hardway/install-cni-plugin