合肥网站建设过程,网站栏目建设调研,wordpress 关键词描述,可以制作网站的软件基本概念和操作 1.Namespace1.1概述1.2应用示例 2.Pod2.1概述2.2语法及应用示例 3.Label3.1概述3.2语法及应用示例 4.Deployment4.1概述4.2语法及应用示例 5.Service5.1概述5.2语法及应用示例5.2.1创建集群内部可访问的Service5.2.2创建集群外部可访问的Service5.2.3删除服务5.… 基本概念和操作 1.Namespace1.1概述1.2应用示例 2.Pod2.1概述2.2语法及应用示例 3.Label3.1概述3.2语法及应用示例 4.Deployment4.1概述4.2语法及应用示例 5.Service5.1概述5.2语法及应用示例5.2.1创建集群内部可访问的Service5.2.2创建集群外部可访问的Service5.2.3删除服务5.2.4对象配置方式 1.Namespace
1.1概述 Namespace是kubernetes系统中一种非常重要的资源它的主要作用是用来实现多套系统的资源隔离或者多租户的资源隔离。 默认情况下kubernetes集群中的所有Pod都是可以相互访问的。但是在实际中可能不想让两个Pod之间进行互相的访问那么此时就可以将两个Pod划分到不同的Namespace下。kubernetes通过将集群内部的资源分配到不同的Namespace中可以形成逻辑上的“组”以方便不同的组的资源进行隔离使用和管理。 可以通过kubernetes的授权机制将不同的Namespace交给不同租户进行管理这样就实现了多租户的资源隔离。此时还能结合kubernetes的资源配额机制限定不同租户能占用的资源例如CPU使用量、内存使用量等等来实现租户可用资源的管理。 kubernetes在集群启动之后会默认创建几个namespace
kubectl get namespace● default所有未指定的Namespace的对象都会被分配在default命名空间。 ● kube-node-lease集群节点之间的心跳维护v1.13开始引入。 ● kube-public此命名空间的资源可以被所有人访问包括未认证用户。 ● kube-system所有由kubernetes系统创建的资源都处于这个命名空间。 1.2应用示例
查看所有名称空间
kubectl get namespace
或
kubectl get ns查看指定名称空间
kubectl get namespace default
或
kubectl get ns default指定命名空间的输出格式
kubectl get ns default -o wide
kubectl get ns default -o yaml # yaml格式输出
kubectl get ns default -o json # json格式输出查看命名空间详情
kubectl describe ns default
或
kubectl describe namespace default创建命名空间
kubectl create ns defult
或
kubectl create namespace default删除命名空间
kubectl delete ns dev
或
kubectl delete namespace dev命令式对象配置
新建ns-dev.yaml
apiVersion: v1
kind: Namespace
metadata:name: dev通过命令式对象配置进行创建和删除
kubectl create -f ns-dev.yaml #创建名称空间
kubectl delete -f ns-dev.yaml #删除名称空间2.Pod
2.1概述
Pod是kubernetes集群进行管理的最小单元程序要运行必须部署在容器中而容器必须存在于Pod中。Pod可以认为是容器的封装一个Pod中可以存在一个或多个容器kubernetes在集群启动之后集群中的各个组件也是以Pod方式运行的可以通过下面的命令查看
kubectl get pods -n kube-system2.2语法及应用示例
创建并运行Pod
kubectl run (Pod的名称) [参数]
# --image 指定Pod的镜像
# --port 指定端口
# --namespace 指定namespace示例在名称为dev的namespace下创建一个Nginx的Pod
kubectl run nginx --imagenginx:1.17.1 --port80 --namespacedev查看Pod的基本信息
kubectl get pods [-n 命名空间的名称]示例查看名称空间为dev的namespace下所有的Pod的信息
kubectl get pods -n dev查看Pod的详细信息
kubectl describe pod pod的名称 [-n 命名空间名称]示例查看名称为dev的namespace下的Pod的名称为nginx的详细信息
kubectl describe pod nginx -n devPod的访问
# 获取Pod的IP
kubectl get pods [-n dev] -o wide
# 通过curl访问
curl ip:端口示例访问nginx的Pod
kubectl get pods -n dev -o wide
curl ip地址删除指定的Pod
kubectl delete pod pod的名称 [-n 命名空间]示例删除nginx的Pod
kubectl delete pod nginx -n dev命令式对象配置
新建pod-nginx.yaml
apiVersion: v1
kind: Pod
metadata:name: nginxnamespace: dev
spec:containers:- image: nginx:1.20imagePullPolicy: IfNotPresent podname: podports: - name: nginx-portcontainerPort: 80protocol: TCP创建和删除命令
kubectl create -f pod-nginx.yaml # 创建pod
kubectl delete -f pod-nginx.yaml # 删除pod3.Label
3.1概述 Label是kubernetes的一个重要概念。它的作用就是在资源上添加标识用来对它们进行区分和选择。 Label的特点 一个Label会以key/value键值对的形式附加到各种对象上如Node、Pod、Service等。一个资源对象可以定义任意数量的Label同一个Label也可以被添加到任意数量的资源对象上去。Label通常在资源对象定义时确定当然也可以在对象创建后动态的添加或删除。 可以通过Label实现资源的多纬度分组以便灵活、方便地进行资源分配、调度、配置和部署等管理工作。 一些常用的Label标签示例如下 版本标签“version”:”release”,”version”:”stable”。。。 环境标签“environment”:”dev”,“environment”:”test”,“environment”:”pro”。。。 架构标签“tier”:”frontend”,”tier”:”backend”。。。 标签定义完毕之后还要考虑到标签的选择这就要用到Label Selector即 Label用于给某个资源对象定义标识。Label Selector用于查询和筛选拥有某些标签的资源对象。 当前有两种Label Selector 基于等式的Label Selector。 nameslave选择所有包含Label中的key“name”并且value“slave”的对象。env!production选择所有包含Label中的key“env”并且value!“production”的对象。 基于集合的Label Selector。 name in (master,slave)选择所有包含Label中的key“name”并且value“master”或value“slave”的对象。name not in (master,slave)选择所有包含Label中的key“name”并且value!“master”和value!“slave”的对象。 标签的选择条件可以使用多个此时将多个Label Selector进行组合使用逗号,进行分隔即可。 namesalve,env!production。name not in (master,slave),env!production。
3.2语法及应用示例
为资源打标签
kubectl label pod xxx keyvalue [-n 命名空间]示例为Nginx的Pod打上标签
kubectl label pod nginx version1.0 -n dev更新资源的标签
kubectl label pod xxx keyvalue [-n 命名空间] --overwrite示例为Nginx的Pod更新标签
kubectl label pod nginx version2.0 -n dev --overwrite查看标签
kubectl get pod xxx [-n 命名空间] --show-labels示例显示Nginx的Pod的标签
kubectl get pod nginx -n dev --show-labels筛选标签
kubectl get pod -l keyvalue [-n 命名空间] --show-labels示例筛选版本号是2.0的在名称为dev的namespace下的Pod
kubectl get pod -l version2.0 -n dev --show-labels删除标签
kubectl label pod xxx key- [-n 命名空间]示例删除名称为dev的namespace下的Nginx的Pod上的标签
kubectl label pod nginx version- -n dev命令式对象配置
新建pod-nginx.yaml
apiVersion: v1
kind: Pod
metadata:name: nginxnamespace: devlabels:version: 3.0env: test
spec:containers:- image: nginx:1.20imagePullPolicy: IfNotPresentname: podports: - name: nginx-portcontainerPort: 80protocol: TCP创建和删除命令
kubectl create -f pod-nginx.yaml # 创建标签
kubectl delete -f pod-nginx.yaml # 删除标签4.Deployment
4.1概述
在kubernetes中Pod是最小的控制单元但是kubernetes很少直接控制Pod一般都是通过Pod控制器来完成的。Pod控制器用于Pod的管理确保Pod资源符合预期的状态当Pod的资源出现故障的时候会尝试进行重启或重建Pod。在kubernetes中Pod控制器的种类有很多本章节只介绍一种Deployment。
4.2语法及应用示例
特别注意在v1.18版之后kubectl run nginx --imagenginx --replicas2 --port80会反馈Flag --replicas has been deprecated, has no effect and will be removed in the future并且只会创建一个Nginx容器实例
创建指定名称的deployement
kubectl create deployment xxx [-n 命名空间]
或
kubectl create deploy xxx [-n 命名空间]示例在名称为dev的命名空间下创建名为nginx的deployment
kubectl create deployment nginx --imagenginx:1.17.1 -n dev根据指定的deplyment创建Pod
kubectl scale deployment xxx [--replicas正整数] [-n 命名空间]示例在名称为dev的命名空间下根据名为nginx的deployment创建4个Pod
kubectl scale deployment nginx --replicas4 -n dev命令式对象配置
创建一个deploy-nginx.yaml内容如下
apiVersion: apps/v1
kind: Deployment
metadata:name: nginxnamespace: dev
spec:replicas: 3selector:matchLabels:run: nginxtemplate:metadata:labels:run: nginxspec:containers:- image: nginx:1.20name: nginxports:- containerPort: 80protocol: TCP创建和执行命令
kubectl create -f deploy-nginx.yaml # 创建deployment
kubectl delete -f deploy-nginx.yaml # 删除deployment查看创建的Pod
kubectl get pods [-n 命名空间]查看名称为dev的namespace下通过deployment创建的3个Pod
kubectl get pods -n dev查看deployment的信息
kubectl get deployment [-n 命名空间]
或
kubectl get deploy [-n 命名空间]示例查看名称为dev的namespace下的deployment
kubectl get deployment -n dev查看deployment的详细信息
kubectl describe deployment xxx [-n 命名空间]
或
kubectl describe deploy xxx [-n 命名空间]示例查看名为dev的namespace下的名为nginx的deployment的详细信息
kubectl describe deployment nginx -n dev删除deployment
kubectl delete deployment xxx [-n 命名空间]
或
kubectl delete deploy xxx [-n 命名空间]示例删除名为dev的namespace下的名为nginx的deployment
kubectl delete deployment nginx -n dev5.Service
5.1概述
我们已经能够利用Deployment来创建一组Pod来提供具有高可用性的服务虽然每个Pod都会分配一个单独的Pod的IP地址但是却存在如下的问题 Pod的IP会随着Pod的重建产生变化。Pod的IP仅仅是集群内部可见的虚拟的IP外部无法访问 这样对于访问这个服务带来了难度因此kubernetes设计了Service来解决这个问题。Service可以看做是一组同类的Pod对外的访问接口借助Service应用可以方便的实现服务发现和负载均衡。
5.2语法及应用示例
5.2.1创建集群内部可访问的Service
暴露Service
kubectl expose deployment xxx --name服务名 --typeClusterIP --port暴露的端口 --target-port指向集群中的Pod的端口 [-n 命名空间]
# 会产生一个CLUSTER-IP这个就是service的IP在Service的生命周期内这个地址是不会变化的示例暴露名为test的namespace下的名为nginx的deployment并设置服务名为svc-nginx1
kubectl expose deployment nginx --namesvc-nginx1 --typeClusterIP --port80 --target-port80 -n dev查看Service
kubectl get service [-n 命名空间] [-o wide]示例查看名为dev的命名空间的所有Service
kubectl get service -n dev5.2.2创建集群外部可访问的Service
暴露Service
kubectl expose deployment xxx --name服务名 --typeNodePort --port暴露的端口 --target-port指向集群中的Pod的端口 [-n 命名空间]
# 会产生一个外部也可以访问的Service示例暴露名为dev的namespace下的名为nginx的deployment并设置服务名为svc-nginx2
kubectl expose deploy nginx --namesvc-nginx2 --typeNodePort --port80 --target-port80 -n dev查看Service
kubectl get service [-n 命名空间] [-o wide]示例查看名为test的命名空间的所有Service
kubectl get service -n dev5.2.3删除服务
删除服务
kubectl delete service xxx [-n 命名空间]示例删除服务
kubectl delete service svc-nginx1 -n dev5.2.4对象配置方式
新建svc-nginx.yaml内容如下
apiVersion: v1
kind: Service
metadata:name: svc-nginxnamespace: dev
spec:ports:- port: 80protocol: TCPtargetPort: 80selector:run: nginxtype: ClusterIP创建和删除命令
kubectl create -f svc-nginx.yaml # 创建服务
kubectl delete -f svc-nginx.yaml # 删除服务