k8s问题整理
摘要1、yaml文件中`image`镜像字段后面可以加哈希校验2、安装kubectx,方便切换命名空间3、如果一个pod被指定了node节点,删除node节点pod会怎么样1、yaml文件中image镜像字段后面可以加哈希校验比如:yaml文件内可以这么写image:nginx%sha:123123213333333333333333333333333333333333332、安装kubectx,
摘要
- 1、yaml文件中`image`镜像字段后面可以加哈希校验
- 2、安装kubectx,方便切换命名空间
- 3、如果一个pod被指定了node节点,删除node节点pod会怎么样
- 4、`kubectl get node`显示的版本号是`kubelet`的版本,与api、controller-manager、scheduler、proxy有什么关系
- 5、查询k8s集群中资源支持api的版本、命名空间隔离性、缩写等
- 6、快速创建一个pod
- 7、快速添加外部访问端口号
- 8、使用`kubectl cp`命令失败
- 9、指定pod到指定节点上的两种方法
- 10、根据标签列出node节点
- 11、四层负载均衡器svc绑定的端口号需要填写成`containerPort`的端口号,这两个是对应的
- 12、健康检查与负载均衡之间的使用
- 13、查看k8s配置文件在什么位置
- 14、查看静态pod,由kebelet直接管理的pod配置文件路径
- 15、calico适合node节点50个以下的集群,50个node节点以上的建议使用typha,100节点以上必须使用typha
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有什么关系
5、查询k8s集群中资源支持api的版本、命名空间隔离性、缩写等
kubectl api-resources
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
选择一个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
11、四层负载均衡器svc绑定的端口号需要填写成containerPort
的端口号,这两个是对应的
yaml文件
ports:
- name: agent10050
containerPort: 10050
12、健康检查与负载均衡之间的使用
上图中,客户通过负载均衡访问deploy的pod,当pod内部服务挂了,负载均衡并不知道,客户再访问时,可能会得到404响应。
在pod中使用存活、就绪检测可避免此情况发生,当存活检测机制发现有问题后,默认会触发重启pod操作,让客户访问正常pod;当就绪检测机制发现有问题后,不会重启pod,但会给service发送暂停服务请求,把客户的连接转到别的正常pod
样例yaml文件
livenessProbe:
httpGet:
port: 8090 #探测8090端口
path: /iserver #探测8090端口下的/portal/index.html网页能否正常打开(根据返回码)
initialDelaySeconds: 100 #容器启动后第一次执行探测是需要等待多少秒
periodSeconds: 2 #执行探测的频率。默认是10秒,最小1秒。
13、查看k8s配置文件在什么位置
查看kubectl
的运行状态即可看出
systemctl status kubelet
14、查看静态pod,由kebelet直接管理的pod配置文件路径
还是通过上一步,先查看到k8s的配置文件,通过k8s配置文件config.yaml
中的staticPodPath
可查看到静态pod的配置文件
进入到该目录下,可看到静态pod是由yaml文件组成的,直接在该目录下任意写一个pod的yaml文件,kubelet
会直接创建这个pod。静态 Pod 总是由 Kubelet 进行创建的,并且总是在 Kubelet所在的 Node 上运行的。
15、calico适合node节点50个以下的集群,50个node节点以上的建议使用typha,100节点以上必须使用typha
每100-200个节点使用一个副本,生产环境,建议使用3个副本,以减少滚动升级的影响。副本数应始终小于节点数,否则滚动升级将停止
更多推荐
所有评论(0)