安装K8s遇到的问题

1。根据以下博客去布置

【2024】k8s集群 图文详细 部署安装使用(两万字)-优快云博客

问题:在安装容器的时候容器显示activate(start)要是running才可以。

vim /etc/systemd/system/containerd.service
按照图片改

2.在   三、部署集群里的下载镜像环节,报错。 解决 registry.k8s.io/pause:3.6镜像无法从远端拉取

这是因为博客中有个地方的源没换.。。。依据kubernetes安装问题记录-爱代码爱编程 (icode.best)中6.2.2

首先,# 生成 config.toml 文件, containerd config defau        lt > /etc/containerd/config.toml

其次vim /etc/containerd/config.toml

将这个换成以下语句# sandbox_image = "registry.k8s.io/pause:3.8"

sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"

修改第65行sanbox_image的值改为registry.aliyuncs.com/google_containers/pause:3.9

需要137行的false改为true

# 重启 systemctl restart containerd

问题2在查看节点的时候报错The connection to the server 192.168.110.128:6443 was refused - did you specify the right host or port?,

kubectl命令出现错误“The connection to the server localhost:8080 was refused”-优快云博客

解决方法:
1.将主节点(master)中的“/etc/kubernetes/admin.conf”文件拷贝到从节点相同目录下
2.配置环境变量

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

3.立即生效

source ~/.bash_profile

第三个问题The connection to the server <HOST>:6443 was refused - did you specify the right host or port 

重置k8s集群(两种方法)

第一种

今天启动虚拟机的时候,在master敲入指令,提示错误,如下所示:

kubectl get po The connection to the server apiserver.demo:6443 was refused - did you specify the right host or port?

按照字面理解是,连接server apiserver.demo:6443被拒绝

于是我查了下hosts文件,发现apiserver.demo的指向在。下一步考虑查看端口,

ss -antulp | grep :6443

也没发现有端口占用。

后面通过百度得知,k8s需要开启kubelet的服务,所以在这里怀疑kubelet没有启动成功;

于是查看kubelet服务

systemctl status kubelet

果然没有启动成功。手动重启kubelet

systemctl restart kubelet

敲get指令还是不行。重新查看服务,发现kubelet没有启动成功。

查看服务systemd日志:

journalctl -xefu kubelet

通过日志发现,原来是没有启动docker。导致kubelet启动失败。

systemctl start docker

systemctl start kubelet
————————————————

第二种

需要在每台机器上执行

kubeadm reset

删除$HOME/.kube

rm -rf $HOME/.kube

然后重做。。三部署集群 那一大步骤

### Kubernetes 常见问题及解决方法 Kubernetesk8s)在生产环境中可能会遇到多种问题,这些问题可能涉及集群的配置、资源限制、网络连接以及组件的健康状态等。以下是一些常见的问题及其解决方案: #### 1. **Pod无法启动** Pod无法启动通常是因为镜像拉取失败、资源不足或配置错误等原因。 - **解决方案**: - 检查 Pod 的事件日志以获取更多信息:`kubectl describe pod <pod-name>`[^1]。 - 确保容器镜像可以被正确拉取:检查镜像仓库是否可用,以及是否提供了正确的认证信息。 - 如果是资源不足导致的问题,可以通过调整资源限制或增加节点来解决问题。 #### 2. **服务不可访问** 服务不可访问可能是由于服务配置错误、网络策略限制或负载均衡器未正确配置等原因。 - **解决方案**: - 检查服务的定义文件是否正确:确保 `selector` 和 Pod 标签匹配[^2]。 - 验证网络策略是否阻止了流量:使用 `kubectl get networkpolicies` 检查是否存在限制性网络策略。 - 对于外部服务,确保负载均衡器已正确配置并分配了外部 IP 地址。 #### 3. **节点不可用** 节点不可用可能是因为磁盘空间不足、内核崩溃或其他硬件问题。 - **解决方案**: - 登录到节点并检查系统日志:`journalctl -xe`。 - 清理不必要的文件和容器镜像以释放磁盘空间:`docker system prune` 或 `kubectl drain <node-name>`[^2]。 - 如果节点仍然不可用,考虑替换节点或将工作负载迁移到其他节点。 #### 4. **资源限制问题** 如果集群中没有设置资源限制,可能导致某些 Pod 占用过多资源,影响其他 Pod 的运行。 - **解决方案**: - 检查集群中是否设置了资源限制:`kubectl get limitrange -o=yaml`[^3]。 - 如果需要,为命名空间设置资源配额:`kubectl create quota <quota-name> --hard=cpu=2,memory=2Gi`。 - 使用 LimitRange 对 Pod 的资源使用进行限制。 #### 5. **日志分析困难** 在排查问题时,日志分析是关键步骤,但有时日志量过大或格式不统一会导致困难。 - **解决方案**: - 使用 `kubectl logs <pod-name>` 查看 Pod 的日志[^1]。 - 如果需要查看特定容器的日志,可以指定容器名称:`kubectl logs <pod-name> -c <container-name>`。 - 考虑使用日志聚合工具(如 ELK Stack 或 Fluentd)来集中管理和分析日志。 ```python # 示例代码:创建资源配额 import subprocess def create_resource_quota(quota_name, cpu_limit, memory_limit): command = f"kubectl create quota {quota_name} --hard=cpu={cpu_limit},memory={memory_limit}Gi" result = subprocess.run(command, shell=True, capture_output=True, text=True) return result.stdout print(create_resource_quota("example-quota", 2, 2)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值