k8s docker是什么,讓我們一起了解一下?
K8S是一個使用 Docker 容器進行編排的系統,主要圍繞 pods 進行工作。 Pods 是 k8s 生態中最小的調度單位,可以包含一個或多個容器。
K8S使用Docker進行編排,也可以使用其他容器管理工具,例如:RunC、Containerted 等。
K8S和Docker的關系是怎樣的?
在K8S里,編排調度的最小單位并不是容器,而是Pod。有了Docker容器,為什么還需要一個Pod?我們說Docker容器就好比云計算操作系統中的應用,K8S相當于操作系統,那Pod就是進程組:即Pod是對一組容器(一個或多個)的抽象。之所以做這樣一層抽象,是因為在 Borg 項目的開發和實踐過程中,Google 公司的工程師們發現,他們部署的應用,往往都存在著類似于“進程和進程組”的關系。在同一個Pod中,可以直接通過localhost通信,并且可以共享網絡棧和Volume。
yaml如下:
apiVersion:?v1 kind:?Pod metadata: ??name:?wordpress ??namespace:?blog spec: ??containers: ????-?name:?wordpress ??????image:?wordpress ??????ports: ????????-?containerPort:?80 ??????????name:?wdport ????????env: ????????-?name:?WORDPRESS_DB_HOST ??????????value:?localhost:3306 ????????-?name:?WORDPRESS_DB_USER ??????????value:?root ????????-?name:?WORDPRESS_DB_PASSWORD ??????????value:?root@123 ????-?name:?mysql ??????image:?mysql:5.7 ??????imagePullPolicy:?IfNotPresent ??????args:??#?新版本鏡像有更新,需要使用下面的認證插件環境變量配置才會生效 ????????-?--default_authentication_plugin=mysql_native_password ????????-?--character-set-server=utf8mb4 ????????-?--collation-server=utf8mb4_unicode_ci ??????ports: ????????-?containerPort:?3306 ??????????name:?dbport ??????env: ????????-?name:?MYSQL_ROOT_PASSWORD ??????????value:?root@123 ????????-?name:?MYSQL_DATABASE ??????????value:?wordpress ????????-?name:?MYSQL_USER ??????????value:?wordpress ????????-?name:?MYSQL_PASSWORD ??????????value:?wordpress ??????volumeMounts: ????????-?name:?db ??????????mountPath:?/var/lib/mysql ????volumes: ??????-?name:?db ????????hostPath: ??????????path:?/var/lib/mysql
當然,K8S也解決了裸跑 Docker 的一些痛點:
1、單機使用,無法有效集群
2、隨著容器數量的上升,管理成本攀升
3、沒有有效的容災、自愈機制
4、沒有預設編排模板,無法實現快速、大規模容器調度
5、若要啟動一些“軟件”,只能一個個去啟動(docker run ..)
6、沒有統一的配置管理中心工具
7、沒有容器生命周期的管理工具
8、沒有圖形化運維管理工具
以上就是小編的分享,希望可以幫助到大家。