cka从入门到放弃

无数次想放弃,最后选择了坚持

监控pod日志

监控名为 foobar 的 Pod 的日志,并过滤出具有 unable-access-website 信息的行,然后将
写入到 /opt/KUTR00101/foobar

# 解析
监控pod的日志,使用kubectl logs pod-name
kubectl logs foobar | grep unable-access-website > /opt/KUTR00101/foobar

监控pod度量指标

找出具有 name=cpu-user 的 Pod,并过滤出使用 CPU 最高的 Pod,然后把它的名字写在已
经存在的/opt/KUTR00401/KUTR00401.txt 文件里(注意他没有说指定 namespace。所以需要使
用-A 指定所以 namespace)

# 解析
过滤cpu最高,使用top命令
kubectl top pod -A -l name=cpu-user 
echo x >> /opt/KUTR00401/KUTR00401.txt

deployment扩缩容

扩容名字为 loadbalancer 的 deployment 的副本数为 6

# 解析
kubectl scale --replicas=6 deployment loadbancer

检查Node节点的健康状态

检查集群中有多少节点为 Ready 状态,并且去除包含 NoSchedule 污点的节点。之后将数字
写到/opt/KUSC00402/kusc00402.txt

# 解析
查看节点ready状态,只需要get直接查就行
而要查调度,就要使用describe来查
kubectl get node | grep -i Ready
kubectl describe node | grep Taint | grep NoSchedule
echo x > /opt/KUSC00402/kusc00402.txt 

节点维护

将 ek8s-node-1 节点设置为不可用,然后重新调度该节点上的所有 Pod

设置不可用,就是将节点设置不可调度,使用cordon
kubectl cordon ek8s-node-1
重新调度

指定节点部署

创建一个 Pod,名字为 nginx-kusc00401,镜像地址是 nginx,调度到具有 disk=spinning 标
签 的 节 点 上

# 解析
vim pod-ns.yaml
apiVersion: v1
kind: Pod
metadata:
	name: nginx-kusc00401
	labels:
		role: nginx-kusc00401
spec:
	nodeSelector:
		disk: spinning
	containers:
		- name: nginx
		  image: nginx

一个pod多个容器

创建一个 Pod , 名 字 为 kucc1 ,这个 Pod 可能包含 1-4 容 器 , 该 题 为 四 个 :
nginx+redis+memcached+consul

apiVersion: v1
kind: Pod
metadata:
	name: kucc1
spec:
	containers:
	- image: nginx
	   name: nginx
   - image: redis
      name: redis
     - image: memcached
     name: memcached
     - image: consul
      name: consul

单题目

监控pod日志

监控名为 foobar 的 Pod 的日志,并过滤出具有 unable-access-website 信息的行,然后将
写入到 /opt/KUTR00101/foobar

监控pod度量指标

找出具有 name=cpu-user 的 Pod,并过滤出使用 CPU 最高的 Pod,然后把它的名字写在已
经存在的/opt/KUTR00401/KUTR00401.txt 文件里(注意他没有说指定 namespace。所以需要使
用-A 指定所以 namespace)

deployment扩缩容

扩容名字为 loadbalancer 的 deployment 的副本数为 6

检查node节点的健康状态

检查集群中有多少节点为 Ready 状态,并且去除包含 NoSchedule 污点的节点。之后将数字
写到/opt/KUSC00402/kusc00402.txt

节点维护

将 ek8s-node-1 节点设置为不可用,然后重新调度该节点上的所有 Pod

指定节点部署

创建一个 Pod,名字为 nginx-kusc00401,镜像地址是 nginx,调度到具有 disk=spinning 标
签 的 节 点 上

一个pod多个容器

创建一个 Pod , 名 字 为 kucc1 ,这个 Pod 可能包含 1-4 容 器 , 该 题 为 四 个 :
nginx+redis+memcached+consul

kubectl练习

logs

打印pod或指定资源中容器的日志
如果pod只有一个容器,则容器名称是可选的

# 仅使用一个容器从pod nginx返回快照日志
kubectl logs nginx
# 使用多容器从pod nginx 返回快照日志
kubectl logs nginx --all-containers=true
# 从标签app=nginx定义的pod中的所有pod容器返回快照日志
kubectl logs -l app=nginx --all-containers=true
# 从pod web-1返回以前终止的ruby容器日志的快照
kubectl logs -p -c ruby web-1
# 开始从标签app=nginx定义的pod中的所有容器流式传输日志
kubectl logs -f -l app=nginx --all-containers=true
# 在pod nginx中显示最近的20行
kubectl logs --tail=20 nginx
# 显示过去一小时内写入的pod nginx中的所有日志
kubectl logs --since=1h nginx
# 显示服务证书已过期的kubelet中的日志
kubectl logs --insecure-skip-tls-verify-backend nginx
# 从名为hello的作业的第一个容器返回快照日志
kubectl logs job/hello
# 从名为nginx的部署的容器nginx-1返回快照日志
kubectl logs deployment/nginx -c nginx-1

top

显示资源使用情况
运行查看node或pod的资源情况
前置条件:需要正确配置metrics server在服务器上工作

node

# 获取所有node
kubectl top node
# 查看指定节点指标
kubectl top node node-name

pod

# 显示默认命名空间的pod指标
kubectl top pod
# 显示指定命名空间的所有pod指标
kubectl top pod --namespace=namespacename
# 显示更定pod及其容器的指标
kubectl top pod pod-name --containers
# 显示name=mylabel定义的pod的指标
kubectl top pod -l name=mylabel

scale

部署 deployment,replicaset replication controller,statefulset
如果指定了 --current-replicas或 --resource-version,则在尝试缩放之前对其进行验证,并保证在将缩放发送到服务器时条件成立

# 将replicaset缩放3
kubectl scale --replicas=3 rs/foo
# 将foo.yaml中缩放为3
kubectl scale --replicas=3 -f foo.yaml
# 如果名为Mysql的当前为2,变为3
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
# 扩展多个rc
kubectl scale --replicas=5 rc/foo rc/bar rc/baz
# 扩展statefulset为3
kubectl scale --replicas=3 statefulset/web

cordon

将节点标记为不可调度,node级别
kubectl cordon foo

drain

排空节点准备维护

容忍(taint)和污点(toleration)

taint和toleration
taint在一类服务器上打上污点,让不能容忍这个污点的pod不能部署在打了污点的服务器上
toleration是让pod容忍节点上配置的污点,可以让一些需要特殊配置的pod能够调用到具有污点和特殊配置的节点上
污点像锁node级别,容忍像钥匙pod级别

taint配置解析

创建一个污点
kubectl taint nodes node-name taint_key=taint_value:effect
kubectl taint nodes k8s-node01 ssd=true:prefernoschedule
NoSchedule:禁止调度到该节点,已经在该节点上的pod不受影响
NoExecute:禁止调度到该节点,如果不符合这个污点,会立马被驱逐(或在一段时间后)
PreferNoSchedule:尽量避免将pod调度到指定的节点上,如果没有更合适的节点,可以部署到该节点

将pod指派给节点

与节点标签匹配的nodeSelector
亲和性和反亲和性
nodeName字段
Pod拓扑分布约束

相关推荐

  1. cka入门放弃

    2023-12-22 08:34:02       31 阅读
  2. Django入门放弃

    2023-12-22 08:34:02       34 阅读
  3. Docker入门放弃

    2023-12-22 08:34:02       12 阅读
  4. 入门放弃之「ClickHouse」

    2023-12-22 08:34:02       46 阅读
  5. PyQt6入门放弃

    2023-12-22 08:34:02       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-22 08:34:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-22 08:34:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-22 08:34:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-22 08:34:02       18 阅读

热门阅读

  1. nodejs设置x-xss-protection解决xss问题

    2023-12-22 08:34:02       39 阅读
  2. 一键启动脚本,Karfka,RocketMQ

    2023-12-22 08:34:02       66 阅读
  3. python初试三

    2023-12-22 08:34:02       47 阅读
  4. 使用汇编和反汇编引擎写一个x86任意地址hook

    2023-12-22 08:34:02       47 阅读
  5. leetcode做题笔记2866. 美丽塔 II

    2023-12-22 08:34:02       35 阅读
  6. css选择器

    2023-12-22 08:34:02       55 阅读
  7. R2S /NEO3(openwrt)几种固件试用总结

    2023-12-22 08:34:02       53 阅读
  8. proto与json的互相转换

    2023-12-22 08:34:02       46 阅读
  9. Pytorch:torch.nn.utils.clip_grad_norm_梯度截断_解读

    2023-12-22 08:34:02       44 阅读