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、没有图形化运维管理工具
以上就是小编的分享,希望可以帮助到大家。