编辑
2023-06-02
K8S
00

1.什么是pod?

Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元Pod(就像在鲸鱼荚或者豌豆荚中)是一组(一个或多个)容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。简言之如果用 Docker 的术语来描述,Pod 类似于共享名字空间并共享文件系统卷的一组容器。

定义

定义: Pod 就是用来管理一组(一个|多个)容器的集合 特点: 共享网络 共享存储 共享上下文环境

2.Pod 怎样管理多个容器?

Pod 中的容器被自动安排到集群中的同一物理机或虚拟机上,并可以一起进行调度。 容器之间可以共享资源和依赖、彼此通信、协调何时以及何种方式终止自身。例如,你可能有一个容器,为共享卷中的文件提供 Web 服务器支持,以及一个单独的 "边车 (sidercar)" 容器负责从远端更新这些文件,如下图所示:

image.png

3.如何使用pod?

通常你不需要直接创建 Pod,甚至单实例 Pod。 相反,你会使用诸如 Deployment 或 Job 这类工作负载资源来创建 Pod。 如果 Pod 需要跟踪状态,可以考虑 StatefulSet 资源。

Kubernetes 集群中的 Pod 主要有两种用法:

  • 运行单个容器的 Pod。"每个 Pod 一个容器" 模型是最常见的 Kubernetes 用例; 在这种情况下,可以将 Pod 看作单个容器的包装器,并且 Kubernetes 直接管理 Pod,而不是容器。
  • 运行多个协同工作的容器 的 Pod。 Pod 可能封装由多个紧密耦合且需要共享资源的共处容器组成的应用程序。 这些位于同一位置的容器可能形成单个内聚的服务单元 —— 一个容器将文件从共享卷提供给公众, 而另一个单独的 “边车”(sidecar)容器则刷新或更新这些文件。 Pod 将这些容器和存储资源打包为一个可管理的实体。

说明:

  • 将多个并置、同管的容器组织到一个 Pod 中是一种相对高级的使用场景。 只有在一些场景中,容器之间紧密关联时你才应该使用这种模式。
  • 每个 Pod 都旨在运行给定应用程序的单个实例。如果希望横向扩展应用程序 (例如,运行多个实例以提供更多的资源),则应该使用多个 Pod,每个实例使用一个 Pod。 在 Kubernetes 中,这通常被称为副本(Replication)。 通常使用一种工作负载资源及其控制器来创建和管理一组 Pod 副本。

3.pod的基本操作

shell
#查看所有的命名空间 kubectl get po -A
shell
#查看默认的命名空间 kubectl get po
shell
#查看详细的命名空间 kubectl get pod -o wide -n kube-system
js
#查看所有pod的命名空间详细信息 kubectl get po -o wide -A
js
#-w 监控 kubectl get po -o wide -A
编辑
2023-05-24
K8S
00

image.png

1.环境和服务器准备。

js
服务器1192.168.24.128 服务器2192.168.24.129 服务器3192.168.24.130

2.同步hosts文件

js
vi /etc/hosts
js
192.168.24.128 songxuan001 192.168.24.129 songxuan002

3.关闭防火墙

js
service firewalld stop

4.关闭swap分区

js
swapoff -a
js
vim /etc/fstab # 注释 swap 行

5.同步时间

js
yum install ntpdate -t
js
ntpdate -u ntp.aliyun.com

6.安装containerd

js
yum install -y yum-utils device-mapper-persistent-data lvm2
js
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装containerd

js
yum install -y containerd.io cri-tools

配置containerd

js
cat > /etc/containerd/config.toml <<EOF disabled_plugins = ["restart"] [plugins.linux] shim_debug = true [plugins.cri.registry.mirrors."docker.io"] endpoint = ["https://frz7i079.mirror.aliyuncs.com"] [plugins.cri] sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.2" EOF
编辑
2023-05-23
K8S
00

image.png

编辑
2023-05-19
Docker
00

1. build

yml
version:"3.0" services: app: bulid:./ #默认指定dockerfile上下文目录

yml
version:"3.0" services: app: bulid: context:./ dockerfile::xxx #指定项目名称

2. depends_on

yml
version:"3.0" services: tomcat: image:tomcat:8.0 ports: - "8080:8080" app: bulid:./ #默认指定dockerfile上下文目录 depends_on: -tomcat #依赖服务,得先启动了tomcat,该服务才会启动。

3. env_file

yml
version:"3.0" services: mysql: image:mysql:5.6 ports: - "3306:3306" #environment: #指定环境 # - "MYSQL_ROOT_PASSWORD=123456" env_file: - ./.env

注意

为了保护隐秘性,env_file去会去找上下文目录的.env文件,env文件内正常写: MYSQL_ROOT_PASSWORD=123456

编辑
2023-05-19
Docker
00

image.png

1.安装Docker-compose

bash
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2.授权。

js
chmod 777 /usr/local/bin/docker-compose

3.简单写一个compose项目。

yml
version:"3.0" services: tomcat: #container_name:tomcat01 #指定一个名称 不推荐使用 image:tomcat:8.0 #代表使用哪个镜像。 ports: #映射端口号。 - 8080:8080 mysql: image:mysql:5.6 ports: - "3306:3306" environment: #指定环境 - "MYSQL_ROOT_PASSWORD=123456" volumes: #数据卷 # - /root/test:/var/lib/mysql #绝对路径方式,但需要提前创建好挂载目录。 - mysqldata:/var/lib/mysql #别名挂载,需要去声明数据卷别名。 volumes: mysqldata: #生命数据卷别名
Document