k8s的名称空间、标签、deployment、控制器、弹性伸缩
⼀、k8s中的名称空间
k8s中名称空间是⽤来隔离集资源,⽽k8s中的资源也分为名称空间级资源以及集级资源。命名空间是集级资源
能够被命名空间所隔离的资源叫命名空间级资源
不被被命名空间所隔离的资源叫命名集级资源
kubectl是k8s客户端,它跟k8s没有任何关系。
kubectl get [资源名称] 获取集资源的命令
#获取名称空间
[root@k8s-m-01 ~]# kubectl get namespace
NAME              STATUS  AGE
default          Active  5d16h
kube-node-lease  Active  5d16h
kube-public      Active  5d16h
kube-system      Active  5d16h
[root@k8s-m-01 ~]# kubectl get ns
NAME              STATUS  AGE
default          Active  5d16h
kube-node-lease  Active  5d16h
kube-public      Active  5d16h
kube-system      Active  5d16h
# 直接⽤命令创建
[root@k8s-m-01 ~]# kubectl create namespace wordpress
namespace/wordpress created
⼆、标签
⼀个 Label 是⼀个 key=value 的键值对,其中 key 与 vaue 由⽤户⾃⼰指定(⾃定义)。Label 可以附加到各种资源对象上,例如Node、Pod、Service、RC 等,⼀个资源对象可以 定义任意数量的 Label,同⼀个 Label 也可以被添加到任意数量的资源对象上
去,Label 通常在资源对象定义时 确定,也可以在对象创建后动态添加或者删除。
我们可以通过指定的资源对象捆绑⼀个或多个不同的 Label 来实现多维度的资源分组管理功能,以便于灵 活、⽅便地进⾏资源分配、调度、配置、部署等管理⼯作。例如:部署不同版本的应⽤到不同的环境中;或者监 控和分析应⽤(⽇志记录、监控、告警)等。⼀些常⽤等 label ⽰例如下
版本标签:"release":"stable" , "release":"canary"
环境标签:"environment":"dev" , "environment":"production"
架构标签:"tier":"frontend" , "tier":"backend" , "tier":"middleware"
分区标签:"partition":"customerA" , "partition":"customerB"
质量管控标签:"track":"daily" , "track": "weekly
k8s当中的标签是⽤来管理(识别)⼀系列容器,⽅便于管理和监控拥有同⼀标签的所有容器
# docker中的TAG = 仓库URL/名称空间/仓库名称:版本号
apiVersion: v1
kind: Pod
metadata:
name: test-tag
labels:
release: stable
spec:
containers:
-
name: nginx
image: nginx
# 查看label
[root@k8s-m-01 ~]# kubectl get pod --show-labels
# 增加标签
kubectl label pod(资源类型) test-tag app=tag
[root@k8s-m-01 ~]# kubectl label pod test-tag app=tag
pod/test-tag labeled
[root@k8s-m-01 ~]# kubectl get pod --show-labels
NAME                    READY  STATUS            RESTARTS  AGE    LABELS
test-tag                0/1    ImagePullBackOff  0          2m15s  app=tag,release=stable
# 删除标签
[root@k8s-m-01 ~]# kubectl label pod test-tag app-
pod/test-tag labeled
#通过标签筛选pods
kubectl get pods -l app=pod
kubectl get pods -L app
# 修改标签
## 先删除后增加
kubectl label pod(资源类型)test app=tag-
kubectl label pod(资源类型)test app=test
k8s中标签的命名规范
1、必须⼩写
2、必须以字母开头
3、名称当中只能够包含字母、数字和中划线(-)
k8s中常⽤的命令
# 获取资源
kubectl get [资源名称]
# 创建资源
kubectl apply [资源类型][资源名称]
kubectl apply -f [资源清单的路径]
三、控制器
知识储备
⽆状态与有状态
所谓⽆状态:没有固定节点,没有固定顺序,没有固定名称,并⾏产⽣
所谓有状态:有顺序,只有⼀个容器启动起来,下⼀个容器才会启动,名字可有序,串⾏产⽣
那么在k8s中,在2种⼯作负载的调度有何异同?
【相同】
均以container以落地形式
均⽀持增加replica(副本)横向扩展
均⽀持挂载存储
【不同】
⽆状态:
副本⽆序随机命名,销毁后重新⽣成命名
并⾏扩容,并⾏缩容
有状态:
副本以0,1,2有序命名,销毁后名称不变,可通过访问副本名保持访问。串⾏有序扩容,顺序为0,1,2。串⾏有序缩容,顺序反之。
⽰例⼀:deployment部署nginx
⽰例⼆:statefulSet部署数据库
k8s中控制器分为:deployment、DaemonSet、StatufluSet、
控制器是⽤来做什么的?
- 管理Pod
3.1deployment
Deploymnet在Deployment对象中描述所需的状态,然后Deployment控制器将实际状态以受控的速率更改为所需的状态
Deployment:⼀般⽤来部署长期运⾏的、⽆状态的应⽤
特点:集之中,随机部署
deployment主要功能是保证有⾜够的pod正常对外提供服务
#编辑deployment配置⽂件
[root@m01 ~]# vim deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment
spec:
replicas: 1
#标签选择器
selector:
matchLabels:
release: stable
template:
metadata:
labels:
release: stable
spec:
containers:
- name: nginx
image: nginx
#运⾏
[root@m01 ~]# kubectl apply -f deployment.yaml
deployment.apps/deployment created
#查看正在运⾏的容器
[root@m01 ~]# kubectl get pods
NAME                          READY  STATUS    RESTARTS  AGE
deployment-5849786498-jfqrn  1/1    Running  0          3m35s
test1/1    Running  0          48m
#查看deployment
[root@m01 ~]# kubectl get deployment.apps
NAME        READY  UP-TO-DATE  AVAILABLE  AGE
deployment  1/1    11          4m18s
#删除deployment
[root@m01 ~]# kubectl delete pod deployment-5849786498-jfqrn
pod "deployment-5849786498-jfqrn" deleted
#过会⼉在查看发现系统会⾃动运⾏⼀个deployment
[root@m01 ~]# kubectl get pods
NAME                          READY  STATUS    RESTARTS  AGE
deployment-5849786498-hlb2c  1/1    Running  0          6m21s
test1/1    Running  0          59m
弹性扩容(缩容)
⽅式1、编辑资源
[root@k8s-m-01 ~]# kubectl edit deployments deployment
修改replicas:后的数量nodeselector
deployment.apps/deployment edited
⽅式2、打标签
#若replicas⼩于当前容器数,缩容,反之扩容。
[root@k8s-m-01 ~]# kubectl patch deployments.apps deployment -p ‘{“spec”:{“replicas”:40}}’⽅式3、scale(设置副本数)
#replicas⼩于当前容器数,缩容,反之扩容。
[root@k8s-m-01 ~]# kubectl scale deployment/deployment --replicas=4

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。