kubernetes资源管理

kubernetes资源以功能分类:

1.工作负载:工作负载型资源用于确保Pod资源对象更好的运行容器化应用。负责运行容器,并且为容器解决环境性依赖,应用程序分为有状态和无状态2种类型。

2.发现与负载均衡:service是kubernetes标准的资源类型之一,用于为工作负载实例提供固的访问入口及负载均衡服务,它把每个可用后端实例定义为Endpoint资源对象,在通过IP地址和端口等属性映射到pod实例或者相应服务端点。Ingress资源则为工作负载提供7层代理及负载均衡功能。

3.配置与存储:kubernetes支持在Pod级别附加Volunme资源对象为容器添加可用的外部存储;kubernetes的ConfigMap资源能够以环境变量或者存储卷的方式接入Pod资源的容器中,并且可以被多个Pod共享引用,从而做到一次修改,多处生效。不过,这种方式不适用存储敏感数据,例如证书,私钥,密码等待,那是另外一个资源类型Secret的功能。

4.集群型资源:集群 型资源不属于任何名称空间,仅仅是由集群管理员操作。常见的集群型资源有:Namespace、Node、Role、ClusterRole、RoleBinding、ClusterRoleBinding。

【一个应用通常需要多个资源的支撑】

 

资源对象管理方式:

命令式命令:适用于一次性任务

命令式对象配置:通过对资源配置清单读取要管理的目标资源对象

声明式对象配置:并不直接指明要进行的对象管理操作,而是提供配置清单文件给kubernetes系统,并委托系统来跟踪活动对象的状态变动。资源对象的创建删除及修改操作全部通过唯一命令kubectl apply 来完成,且每次操作时,提供给命令的配置信息会保存在对象的注解信息中,通过进行对比然后变更合并,从而实现仅仅修改变动字段的高级补丁机制。

创建:kubectl apply -f  <directory清单所在目录>/

预览:kubectl diff  -f  <directory>/

更新:kubectl apply  -f  <directory>/

删除:kubectl delete  -f  <filename>/

查看:kubectl  get  -f  <filename|url>  -o  yaml

 

节点资源:

查看节点资源状态信息:

kubectl describe  nodes  [NODE]

例如:查看k8s-node01

[root@k8s-master01 ~]# kubectl describe nodes k8s-node01
Name: k8s-node01
Roles: <none>
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/arch=amd64
kubernetes.io/hostname=k8s-node01
kubernetes.io/os=linux
Annotations: flannel.alpha.coreos.com/backend-data: {"VNI":1,"VtepMAC":"fa:d5:bd:76:80:eb"}
flannel.alpha.coreos.com/backend-type: vxlan
flannel.alpha.coreos.com/kube-subnet-manager: true
flannel.alpha.coreos.com/public-ip: 10.122.138.245
kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
node.alpha.kubernetes.io/ttl: 0
volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp: Thu, 12 Aug 2021 20:21:02 +0800
Taints: <none>
Unschedulable: false
Lease:
HolderIdentity: k8s-node01
AcquireTime: <unset>
RenewTime: Sun, 15 Aug 2021 09:19:25 +0800
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
NetworkUnavailable False Thu, 12 Aug 2021 20:28:43 +0800 Thu, 12 Aug 2021 20:28:43 +0800 FlannelIsUp Flannel is running on this node      #true表示网络配置不正确
MemoryPressure False Sun, 15 Aug 2021 09:14:32 +0800 Thu, 12 Aug 2021 20:21:02 +0800 KubeletHasSufficientMemory kubelet has sufficient memory available         #true表示内存资源存在压力
DiskPressure False Sun, 15 Aug 2021 09:14:32 +0800 Thu, 12 Aug 2021 20:21:02 +0800 KubeletHasNoDiskPressure kubelet has no disk pressure                                  #true表示磁盘存在压力
PIDPressure False Sun, 15 Aug 2021 09:14:32 +0800 Thu, 12 Aug 2021 20:21:02 +0800 KubeletHasSufficientPID kubelet has sufficient PID available                               #true表示进程数量存在压力
Ready True Sun, 15 Aug 2021 09:14:32 +0800 Thu, 12 Aug 2021 20:28:45 +0800 KubeletReady kubelet is posting ready status                                                                   #ready 是true表示节点健康,并且准备好接收pod
Addresses:
InternalIP: 10.122.138.245
Hostname: k8s-node01
Capacity:
cpu: 4
ephemeral-storage: 51175Mi
hugepages-2Mi: 0
memory: 3861288Ki
pods: 110
Allocatable:
cpu: 4
ephemeral-storage: 48294789041
hugepages-2Mi: 0
memory: 3758888Ki
pods: 110
System Info:
Machine ID: 0f2f4b415e294bd3a5a7dd7396b8c86f
System UUID: 4C774D56-F4CB-6D1F-09F4-D23C0E327F7E
Boot ID: 17c45315-7d4a-4fb5-90f7-c6e62a090a42
Kernel Version: 3.10.0-1160.el7.x86_64
OS Image: CentOS Linux 7 (Core)
Operating System: linux
Architecture: amd64
Container Runtime Version: docker://20.10.8
Kubelet Version: v1.19.0
Kube-Proxy Version: v1.19.0
PodCIDR: 10.244.2.0/24
PodCIDRs: 10.244.2.0/24
Non-terminated Pods: (3 in total)
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits AGE
--------- ---- ------------ ---------- --------------- ------------- ---
default demoapp-5f7d8f9847-nvnnh 0 (0%) 0 (0%) 0 (0%) 0 (0%) 2d10h
kube-system kube-flannel-ds-nhst8 100m (2%) 100m (2%) 50Mi (1%) 50Mi (1%) 2d12h
kube-system kube-proxy-wdfr4 0 (0%) 0 (0%) 0 (0%) 0 (0%) 2d12h
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 100m (2%) 100m (2%)
memory 50Mi (1%) 50Mi (1%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
Events: <none>

 

考虑到系统维护和硬件升级等等,管理员有时候需要手动重启或者下线某个工作节点:

封锁:

[root@k8s-node01 yaml]# kubectl cordon k8s-node02
node/k8s-node02 cordoned

查看一下:

[root@k8s-node01 yaml]# kubectl get nodes/k8s-node02
NAME STATUS ROLES AGE VERSION
k8s-node02 Ready,SchedulingDisabled <none> 2d13h v1.19.0     #被封锁的节点状态在ready后面多了一个

【注意:封锁工作节点对DaemonSet控制器创建的pod对象无效】

排空节点:

[root@k8s-node01 yaml]# kubectl drain nodes/k8s-node02
node/k8s-node02 already cordoned
error: unable to drain node "k8s-node02", aborting command...

There are pending nodes to be drained:
k8s-node02

 

解封:

[root@k8s-node01 yaml]# kubectl uncordon k8s-node02
node/k8s-node02 uncordoned
[root@k8s-node01 yaml]# kubectl get nodes/k8s-node02
NAME STATUS ROLES AGE VERSION
k8s-node02 Ready <none> 2d13h v1.19.0

 

标签与标签选择器

 

posted @ 2021-08-14 15:59  拥抱大海,面向天空  阅读(60)  评论(0)    收藏  举报