Kubernetes使用中发现的问题和错误

Stella981
• 阅读 968

Kubernetes使用中发现的问题和错误

本文不再更新,移动到 https://qq253498229.github.io/docs-k8s/

安装minikube/kubectl

k8s本地和服务器使用时大多数的问题都是由于访问不了google导致的,所以在出现这类错误的时候首先就是考虑国内有没有镜像,其次再考虑自己搭建一个可以访问的镜像

其次官方给出了一些常见的错误及解决办法: troubleshooting-kubeadm

由于是我使用的是macOS,接近于linux,所以只介绍linux下的安装方法

  1. 安装minikube

在github的release页面下载对应版本的minikube

我下载的是 macOS适用的 minikube-darwin-amd64,将它改名为minikube移动到PATH目录中,并加入执行权限:

curl -LO minikube https://github.com/kubernetes/minikube/releases/download/v0.28.1/minikube-darwin-amd64
mv ./minikube /usr/local/bin/
chmod +x /usr/local/bin/minikube

执行 minikube version 命令查看是否成功

  1. 安装kubectl

    curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl mv ./kubectl /usr/local/bin/ chmod +x /usr/local/bin/kubectl

执行 kubectl version 命令查看是否成功

Kubectl自动补全

source <(kubectl completion bash) # 针对bash环境
source <(kubectl completion zsh)  # 针对zsh环境

运行dashboard时报错:

Error validating service: Error getting service kubernetes-dashboard: services "kubernetes-dashboard" not found

排查 kubectl get po --all-namespaces之后发现如下pod:

kube-system   kube-addon-manager-minikube   1/1       Running             0          1m
kube-system   kube-dns-6fc954457d-rpnsn     0/3       ContainerCreating   0          43s
kube-system   kubernetes-dashboard-5zbh5    0/1       ContainerCreating   0          43s

其中时有kubernetes-dashboard的,之后发现时自己的dns指向了 192.168.31.1 (小米路由的锅),将其改为 8.8.8.8 之后成功打开dashboard WebUI。

运行minikube时报错

zsh: exec format error: minikube

开始以为是zsh命令行工具的错误,google/stackoverflow了一阵子发现不对,是我下载的minikube是用迅雷下载的,重新用curl下载之后就正常使用了

自动安装docker(阿里云镜像)

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

手动安装docker

sudo apt-get remove docker docker-engine docker.io

sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
    
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
   
sudo apt-get update

sudo apt-get install docker-ce

安装生产环境k8s(阿里云镜像)

apt-get update && apt-get install -y apt-transport-https  
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -  
cat << EOF >/etc/apt/sources.list.d/kubernetes.list  

deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main  

EOF

apt-get update  

apt-get install -y kubelet kubeadm kubectl  

systemctl enable kubelet && systemctl start kubelet  

crictl包丢失

VERSION="v1.11.1"
wget https://github.com/kubernetes-incubator/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
rm -f crictl-$VERSION-linux-amd64.tar.gz

init时候无法拉取google镜像

执行如下shell脚本:

#!/bin/bash

images=(kube-proxy-amd64:v1.11.1 kube-controller-manager-amd64:v1.11.1 kube-scheduler-amd64:v1.11.1 kube-apiserver-amd64:v1.11.1 coredns:1.1.3 etcd-amd64:3.2.18 pause:3.1)

for image in ${images[@]}; do
  docker pull codeforfun/$image
  docker tag codeforfun/$image k8s.gcr.io/$image
  docker rmi codeforfun/$image
done

之后使用

kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr 10.244.0.0/16

启动k8s集群

kubectl命令报错

Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes")

这个错误的原因是执行 kubeadm init 之后没有关注到控制台的输出,其中有一段话:

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

意思是需要首先执行上面三行脚本之后才可以继续使用集群

Unable to update cni config: No networks found in /etc/cni/net

错误如下:

Unable to update cni config: No networks found in /etc/cni/net
Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message

解决方法是安装flannel:

sysctl net.bridge.bridge-nf-call-iptables=1

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml

1 node(s) had taints that the pod didn't tolerate.

有时候一个pod创建之后一直是pending,没有日志,也没有pull镜像,describe的时候发现里面有一句话: 1 node(s) had taints that the pod didn't tolerate.

直译意思是节点有了污点无法容忍,执行 kubectl get no -o yaml | grep taint -A 5 之后发现该节点是不可调度的。这是因为kubernetes出于安全考虑默认情况下无法在master节点上部署pod,于是用下面方法解决:

kubectl taint nodes --all node-role.kubernetes.io/master-

查看服务错误日志

journalctl -u -f

nodePort无法开放80端口,提示不在30000-32767范围内

修改/etc/kubernetes/manifests/kube-apiserver.yaml(有些版本也可能是json)文件,修改其中的 - --service-node-port-range=80-32767 将range从30000-32767修改为80-32767。如果没有这句话,则按照格式添加一句。

别名及缩写

资源类型

缩写别名

clusters

componentstatuses

cs

configmaps

cm

daemonsets

ds

deployments

deploy

endpoints

ep

event

ev

horizontalpodautoscalers

hpa

ingresses

ing

jobs

limitranges

limits

namespaces

ns

networkpolicies

nodes

no

statefulsets

persistentvolumeclaims

pvc

persistentvolumes

pv

pods

po

podsecuritypolicies

psp

podtemplates

replicasets

rs

replicationcontrollers

rc

resourcequotas

quota

cronjob

secrets

serviceaccount

sa

services

svc

storageclasses

thirdpartyresources

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这