摘要:基于的本地環境搭建與應用部署歸納于分布式容器與編排,參考了一文,更多或者相關資料參閱。最后我們還可以用與命令來刪除應用
基于 Docker for MAC 的 Kubernetes 本地環境搭建與應用部署歸納于分布式容器與編排,參考了 Docker + Kubernetes一文,更多 Docker 或者 Kubernetes 相關資料參閱 Awesome Reference。基于 Docker for MAC 的 Kubernetes 本地環境搭建與應用部署
下載最新的 Docker for Mac 或者 Edge 版本,即可以看到內置的 Kubernetes 集群,直接點擊安裝即可在本地搭建好單節點的 Kubernetes 環境:
安裝完畢后,如果我們也勾選了 Show system containers 選項,那么使用如下的 Docker 命令,能看到自動安裝的 Kubernetes 相關容器:
? ~ docker container ls --format "table{{.Names}} {{.Image }} {{.Command}}" NAMES IMAGE COMMAND k8s_compose_compose-75f8bb4779-stxv9_docker_3c963862-f9f4-11e7-93cc-025000000001_0 docker/kube-compose-controller "/compose-controller…" k8s_POD_compose-75f8bb4779-stxv9_docker_3c963862-f9f4-11e7-93cc-025000000001_0 gcr.io/google_containers/pause-amd64:3.0 "/pause" k8s_sidecar_kube-dns-545bc4bfd4-799pr_kube-system_139bf000-f9f4-11e7-93cc-025000000001_0 gcr.io/google_containers/k8s-dns-sidecar-amd64 "/sidecar --v=2 --lo…" k8s_dnsmasq_kube-dns-545bc4bfd4-799pr_kube-system_139bf000-f9f4-11e7-93cc-025000000001_0 gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64 "/dnsmasq-nanny -v=2…" k8s_kubedns_kube-dns-545bc4bfd4-799pr_kube-system_139bf000-f9f4-11e7-93cc-025000000001_0 gcr.io/google_containers/k8s-dns-kube-dns-amd64 "/kube-dns --domain=…" k8s_kube-proxy_kube-proxy-rrd8t_kube-system_139b00df-f9f4-11e7-93cc-025000000001_0 gcr.io/google_containers/kube-proxy-amd64 "/usr/local/bin/kube…" k8s_POD_kube-dns-545bc4bfd4-799pr_kube-system_139bf000-f9f4-11e7-93cc-025000000001_0 gcr.io/google_containers/pause-amd64:3.0 "/pause" k8s_POD_kube-proxy-rrd8t_kube-system_139b00df-f9f4-11e7-93cc-025000000001_0 gcr.io/google_containers/pause-amd64:3.0 "/pause" k8s_kube-scheduler_kube-scheduler-docker-for-desktop_kube-system_972d74c9fc2f4ebd8ab673058e386a65_0 gcr.io/google_containers/kube-scheduler-amd64 "kube-scheduler --ad…" k8s_kube-apiserver_kube-apiserver-docker-for-desktop_kube-system_f7a81e8fe624bd46059fc6084e86bb81_0 gcr.io/google_containers/kube-apiserver-amd64 "kube-apiserver --ad…" k8s_etcd_etcd-docker-for-desktop_kube-system_56a21c0a5f545c0cca5388c457bb1b3b_0 gcr.io/google_containers/etcd-amd64 "etcd --advertise-cl…" k8s_kube-controller-manager_kube-controller-manager-docker-for-desktop_kube-system_8d1848c1e562e35a225e402988eadcd1_0 gcr.io/google_containers/kube-controller-manager-amd64 "kube-controller-man…" k8s_POD_kube-apiserver-docker-for-desktop_kube-system_f7a81e8fe624bd46059fc6084e86bb81_0 gcr.io/google_containers/pause-amd64:3.0 "/pause" k8s_POD_kube-controller-manager-docker-for-desktop_kube-system_8d1848c1e562e35a225e402988eadcd1_0 gcr.io/google_containers/pause-amd64:3.0 "/pause" k8s_POD_kube-scheduler-docker-for-desktop_kube-system_972d74c9fc2f4ebd8ab673058e386a65_0 gcr.io/google_containers/pause-amd64:3.0 "/pause" k8s_POD_etcd-docker-for-desktop_kube-system_56a21c0a5f545c0cca5388c457bb1b3b_0 gcr.io/google_containers/pause-amd64:3.0 "/pause"
關于各個容器的作用,可以參閱 這里。在安裝過程中,Docker 也為我們安裝了 kubectl 控制命令:
$ kubectl get namespaces $ kubectl get posts --namespace kube-system
接下來我們可以使用 kubectl 命令來創建簡單的 kubernetes-dashboard 服務:
? ~ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml secret "kubernetes-dashboard-certs" created serviceaccount "kubernetes-dashboard" created role "kubernetes-dashboard-minimal" created rolebinding "kubernetes-dashboard-minimal" created deployment "kubernetes-dashboard" created service "kubernetes-dashboard" created
服務安裝完畢后可以查看部署的容器與服務:
? ~ kubectl get deployments --namespace kube-system NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE kube-dns 1 1 1 1 22m kubernetes-dashboard 1 1 1 0 26s ? ~ kubectl get services --namespace kube-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kube-dns ClusterIP 10.96.0.1053/UDP,53/TCP 22m kubernetes-dashboard ClusterIP 10.111.242.95 443/TCP 30s
在 Dashboard 啟動完畢后,可以使用 kubectl 提供的 Proxy 服務來訪問該面板:
$ kubectl proxy # 打開如下地址: # http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
如果訪問報錯,可以嘗試編輯 kubernetes-dashboard 服務,或者參閱這里:
$ kubectl -n kube-system edit service kubernetes-dashboard # Please edit the object below. Lines beginning with a "#" will be ignored, # and an empty file will abort the edit. If an error occurs while saving this file will be # reopened with the relevant failures. # apiVersion: v1 ... name: kubernetes-dashboard namespace: kube-system resourceVersion: "343478" selfLink: /api/v1/namespaces/kube-system/services/kubernetes-dashboard-head uid: 8e48f478-993d-11e7-87e0-901b0e532516 spec: clusterIP: 10.100.124.90 externalTrafficPolicy: Cluster ports: - port: 443 protocol: TCP targetPort: 8443 selector: k8s-app: kubernetes-dashboard sessionAffinity: None type: ClusterIP ->> NodePort status: loadBalancer: {}
訪問上述地址,我們可以看到登錄界面:
此時可暫時直接跳過,進入到控制面板中:
Docker 同樣為我們提供了簡單的應用示范,可以直接使用如下的 Docker Compose 配置文件:
version: "3.3" services: web: build: web image: dockerdemos/lab-web volumes: - "./web/static:/static" ports: - "80:80" words: build: words image: dockerdemos/lab-words deploy: replicas: 5 endpoint_mode: dnsrr resources: limits: memory: 16M reservations: memory: 16M db: build: db image: dockerdemos/lab-db
然后使用 stack 命令創建應用棧:
$ docker stack deploy --compose-file stack.yml demo Stack demo was created Waiting for the stack to be stable and running... - Service web has one container running
應用棧創建完畢后,可以使用 kubectl 查看創建的 Pods:
$ kubectl get pods NAME READY STATUS RESTARTS AGE db-7f99cc64b7-cbd9t 1/1 Running 0 2m web-758c6998f8-tmxfm 1/1 Running 0 2m words-54bf6c5d57-8bxc8 1/1 Running 0 2m words-54bf6c5d57-dzxm8 1/1 Running 0 2m words-54bf6c5d57-k2448 1/1 Running 0 2m words-54bf6c5d57-mhh4p 1/1 Running 0 2m words-54bf6c5d57-w2q82 1/1 Running 0 2m
也可以來查看部署的集群與服務:
$ kubectl get deployments NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE db 1 1 1 1 3m web 1 1 1 1 3m words 5 5 5 5 3m $ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE db ClusterIP None55555/TCP 3m kubernetes ClusterIP 10.96.0.1 443/TCP 52m web LoadBalancer 10.97.154.28 80:30577/TCP 3m words ClusterIP None 55555/TCP 3m
可以看到這里的 web 有所謂的 LoadBalancer 類型,即可以對外提供服務。最后我們還可以用 stack 與 kubectl 命令來刪除應用:
$ docker stack remove demo $ kubectl delete deployment kubernetes-dashboard --namespace kube-system
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/27208.html
摘要:基于的本地環境搭建與應用部署歸納于分布式容器與編排,參考了一文,更多或者相關資料參閱。最后我們還可以用與命令來刪除應用 showImg(https://segmentfault.com/img/remote/1460000006760432); 基于 Docker for MAC 的 Kubernetes 本地環境搭建與應用部署歸納于分布式容器與編排,參考了 Docker + Kub...
摘要:默認監聽在端口,所以我們把宿主機的端口映射到容器的端口用下面的命令可以看到正在運行中的容器這時如果你用瀏覽器訪問,就能看到我們剛才創建的頁面。這時如果刷新瀏覽器,就可以看到更新的內容。 早在 Docker 正式發布幾個月的時候,LeanCloud 就開始在生產環境大規模使用 Docker,在過去幾年里 Docker 的技術棧支撐了我們主要的后端架構。這是一篇寫給程序員的 Docker ...
摘要:代表的解決方案為。雖然官網列出的部署方式很多,但也不用被這么多種部署方式搞糊涂了。雖然只是一條命令,但其實執行了很多步驟命令執行后輸出如下可以看到,主要做了這些事創建了名為的虛擬機,并在虛擬機中安裝了容器運行時。 綜述 Kubernetes集群的組件眾多,要部署一套符合生產環境的集群不是一件容易的事。好在隨著社區的快速發展,特別是在它成為事實上的容器編排標準以后,基本所有的主流云平臺都...
摘要:代表的解決方案為。雖然官網列出的部署方式很多,但也不用被這么多種部署方式搞糊涂了。雖然只是一條命令,但其實執行了很多步驟命令執行后輸出如下可以看到,主要做了這些事創建了名為的虛擬機,并在虛擬機中安裝了容器運行時。 綜述 Kubernetes集群的組件眾多,要部署一套符合生產環境的集群不是一件容易的事。好在隨著社區的快速發展,特別是在它成為事實上的容器編排標準以后,基本所有的主流云平臺都...
摘要:為容器設計的商業安全套件,功能包括安全審計容器鏡像驗證運行時保護自動策略學習或入侵預防。基于一種稱為的新內核技術,允許根據容器身份定義并執行網絡層和層安全策略。自動發現應用程序容器和服務的行為,以及與其他類似方式檢測安全升級和其他威脅。 數人云:隨著越來越多的企業將生產工作負載遷移到容器當中,關于Docker的安全性,成了普遍關注的問題。 這是一個簡單卻又沒有答案的問題,不要試圖用二進...
閱讀 3470·2019-08-30 13:15
閱讀 1406·2019-08-29 18:34
閱讀 834·2019-08-29 15:18
閱讀 3492·2019-08-29 11:21
閱讀 3253·2019-08-29 10:55
閱讀 3709·2019-08-26 10:36
閱讀 1876·2019-08-23 18:37
閱讀 1832·2019-08-23 16:57