k8s分享 taro Posted on Aug 12 2023 ## docker https://yeasy.gitbook.io/docker_practice/basic_concept/container ### 镜像 images Docker 镜像 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。 #### dockerfile - FROM - RUN - COPY - ADD - CMD - ENTRYPOINT - ARG (代理) - ENV ### 容器 Container 容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。 跟虚拟机有什么不同? #### 操作 - docker ps - docker run (-d -v -p --entrypoint -it ) - docker start - docker rm - docker exec - docker export / import ### 仓库 Registry 镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。 - docker login - docker pull - docker push ## Kubernetes https://github.com/Metarget/metarget https://kubernetes.io/ ### 资源 #### node Kubernetes 通过将容器放入在节点(Node)上运行的 Pod 中来执行你的工作负载。 节点可以是一个虚拟机或者物理机器,取决于所在的集群配置。 每个节点包含运行 Pod 所需的服务; 这些节点由控制面负责管理。 #### Pod Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。 ```yaml apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 ``` #### pod 控制器 - Deployments - ReplicaSet - DaemonSet - CronJob #### service 创建一个名称为 "my-service" 的新 Service, 该服务服务类型默认为 ClusterIP。 该服务指向带有标签 app.kubernetes.io/name: MyApp 的所有 Pod 的TCP 端口 9376。 ```yaml apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app.kubernetes.io/name: MyApp ports: - protocol: TCP port: 80 targetPort: 9376 ``` #### RBAC https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/rbac/#restrictions-on-role-creation-or-update ``` kubectl create clusterrole pod-reader --verb=get,list,watch --resource=pods ``` - user - role - clusterrole - rolebinding - clusterrolebinding ### 操作 - kubectl get - kubectl describe - kubectl create - kubectl update - kubectl create - kubectl delete - kubectl log - kubectl exec - kubectl port-forward - kubectl proxy 年轻人的第一个大模型玩具 portswigger oauth 关卡详解