k8s问题整理

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: k8s问题整理

1、yaml文件中image镜像字段后面可以加哈希校验


比如:

yaml文件内可以这么写

image:nginx%sha:12312321333333333333333333333333333333333333


2、安装kubectx,方便切换命名空间


在日常使用k8s集群中,查看一个pod总会在后面添加-n kube-system这样类似的后缀才能看到该命名空间下的资源

安装完kubectx后,只需切换一次即可

安装

sudo git clone https://github.com/ahmetb/kubectx /opt/kubectx
sudo ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens


运行命令查看当前命名空间

kubens


切换到kube-system命名空间下

kubens kube-system

再查看kube-system命名空间下的资源就不用添加-n kube-system


3、如果一个pod被指定了node节点,删除node节点pod会怎么样


4、kubectl get node显示的版本号是kubelet的版本,与api、controller-manager、scheduler、proxy有什么关系


1675181735516.jpg


5、查询k8s集群中资源支持api的版本、命名空间隔离性、缩写等


kubectl api-resources

1675181755993.jpg


6、快速创建一个pod


kubectl run --image=httpd httpd

添加更多参数

kubectl run --image=httpd --image-pull-policy=IfNotPresent --requests=cpu=200m,memory=200Mi
--limits=cpu=1024m,memory=1024Mi --port=80 --expose webserve


7、快速添加外部访问端口号


已上面pod信息为例,暴露本节点一个外部可访问的端口号8888映射到内容80端口号上

kubectl port-forward --address 0.0.0.0 pod/httpd 8888:80


8、使用kubectl cp命令失败


如果容器内容没有tar命令,kubectl cp将运行失败


9、指定pod到指定节点上的两种方法


1、使用nodeName,后面接node节点的名称


先使用kubectl get nodes查看node节点详细名称

kubectl get nodes

再在yml文件中使用nodeName字段指定

nodeName:K8s-node1

2、使用nodeSelector,选择标签方式选择节点,只要节点上存在该标签,正常情况即可被调度上


首先确定下该节点上的标签

kubectk get nodes --show-labels

1675181853776.jpg

选择一个node节点,打上labels

kubectl label nodes k8s-node04  disk=ssd
                      node的名称  键值对


删除一个node的标签,只需在键值对后年直接-号即可

kubectl label nodes k8s-node04 disk-

在yaml文件中新增nodeSelector,选择该节点存在的标签

nodeSelector:
disk: ssd


10、根据标签列出node节点列出所有有disks=ssd标签的节点


kubectl get node -l disks=ssd

1675181916286.jpg


11、四层负载均衡器svc绑定的端口号需要填写成containerPort的端口号,这两个是对应的


yaml文件

ports:
        - name: agent10050
          containerPort: 10050


12、健康检查与负载均衡之间的使用


1675181944795.jpg


上图中,客户通过负载均衡访问deploy的pod,当pod内部服务挂了,负载均衡并不知道,客户再访问时,可能会得到404响应。


在pod中使用存活、就绪检测可避免此情况发生,当存活检测机制发现有问题后,默认会触发重启pod操作,让客户访问正常pod;当就绪检测机制发现有问题后,不会重启pod,但会给service发送暂停服务请求,把客户的连接转到别的正常pod

1675181954373.jpg


样例yaml文件

livenessProbe:
          httpGet:
            port: 8090                        #探测8090端口
            path: /iserver          #探测8090端口下的/portal/index.html网页能否正常打开(根据返回码)
          initialDelaySeconds: 100              #容器启动后第一次执行探测是需要等待多少秒
          periodSeconds: 2                  #执行探测的频率。默认是10秒,最小1秒。


13、查看k8s配置文件在什么位置


查看kubectl的运行状态即可看出

systemctl status kubelet

1675181991123.jpg


14、查看静态pod,由kebelet直接管理的pod配置文件路径


还是通过上一步,先查看到k8s的配置文件,通过k8s配置文件config.yaml中的staticPodPath可查看到静态pod的配置文件


1675182010885.jpg


进入到该目录下,可看到静态pod是由yaml文件组成的,直接在该目录下任意写一个pod的yaml文件,kubelet会直接创建这个pod。静态 Pod 总是由 Kubelet 进行创建的,并且总是在 Kubelet所在的 Node 上运行的。


15、calico适合node节点50个以下的集群,50个node节点以上的建议使用typha,100节点以上必须使用typha


每100-200个节点使用一个副本,生产环境,建议使用3个副本,以减少滚动升级的影响。副本数应始终小于节点数,否则滚动升级将停止

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
运维 安全 Oracle
系统无法执行su操作案例以及解决问题过程
系统无法执行su操作案例以及解决问题过程
|
6月前
|
存储 Kubernetes 网络安全
[k8s]使用nfs挂载pod的应用日志文件
[k8s]使用nfs挂载pod的应用日志文件
216 1
|
Kubernetes 安全 Linux
【阿里云镜像】使用阿里巴巴开源镜像站镜像——Kubernetes 镜像
【阿里云镜像】使用阿里巴巴开源镜像站镜像——Kubernetes 镜像
790 0
【阿里云镜像】使用阿里巴巴开源镜像站镜像——Kubernetes 镜像
|
Oracle Java 关系型数据库
ARM架构下的Docker环境,OpenJDK官方没有8版本镜像,如何完美解决?
ARM处理器环境下,想把Java应用运行在Docker环境,首先要找好基础镜像,如果您的Java应用是基于JDK8版本,就会面临找不到8版本JDK镜像的问题,本文就来解决此问题
1181 0
ARM架构下的Docker环境,OpenJDK官方没有8版本镜像,如何完美解决?
|
存储 SQL 人工智能
Neo4j入门实战,以三国英雄关系为例入门Neo4j知识图谱
Neo4j入门实战,以三国英雄关系为例入门Neo4j知识图谱
1865 0
Neo4j入门实战,以三国英雄关系为例入门Neo4j知识图谱
|
6月前
|
Kubernetes iOS开发 Docker
Docker系列.Docker Desktop中如何启用Kubernetes
Docker系列.Docker Desktop中如何启用Kubernetes
735 5
|
运维 监控 前端开发
云巧项目案例-某水务集团协同平台项目
某水务集团期望通过数字化转型实现供水全过程监控预警与水质全过程保障体系。在交付过程中面临业务复杂、高度定制化及项目工期紧张等挑战。项目组最终选择使用云巧进行模块化系统搭建,通过采用云巧表单与流程等通用组件,按照云巧标准定制开发,使用云巧搭建能力将新的应用系统定制开发页面与客户已有系统页面平滑对接。经评估,采用云巧比传统的软件定制开发节省了至少30%的人力和时间成本,同时保证了交付质量。
云巧项目案例-某水务集团协同平台项目
|
9月前
|
存储 Kubernetes 数据库
小笔记:关于 gitlab 运行 gitlab-ctl reconfigure 后数据清空(gitlab数据备份与恢复)
小笔记:关于 gitlab 运行 gitlab-ctl reconfigure 后数据清空(gitlab数据备份与恢复)
1152 0
|
自然语言处理 算法 测试技术
实测通义灵码:解锁智能编程的钥匙
写了5个小时的文章,认真的把通义灵码从头到尾玩了一遍,整体来说还是很惊喜的,根据此次不完整的测评,我个人感受可以给通义灵码打到 3.5~4 分之间(满分5分),我觉得这也算是一个很中肯的评价了,具体测试的过程都在本文中有详细列出,希望能和大家一起分享一起学习。本文为原创,未经许可请勿搬运。
360761 17
实测通义灵码:解锁智能编程的钥匙

热门文章

最新文章