1.4.4.7 常见初始化报错

1.4.4.7.1 无法拉取镜像或镜像地址错误
[root@k8s-master1 ~]# kubeadm init --apiserver-advertise-address=10.0.0.9 --apiserver-bind-port=6443 --control-plane-endpoint=10.0.0.100 --ignore-preflight-errors=swap --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version=v1.21.1 --pod-network-cidr=10.10.0.0/16 --service-cidr=10.20.0.0/16 --service-dns-domain=waluna.local
[init] Using Kubernetes version: v1.21.1
[preflight] Running pre-flight checks
        [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
        [WARNING Swap]: running with swap on is not supported. Please disable swap
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
error execution phase preflight: [preflight] Some fatal errors occurred:
        [ERROR ImagePull]: failed to pull image registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:v1.8.0: output: Error response from daemon: pull access denied for registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
, error: exit status 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
[root@k8s-master1 ~]# 

[root@k8s-master1 ~]# kubeadm config images list --kubernetes-version v1.21.1
k8s.gcr.io/kube-apiserver:v1.21.1
k8s.gcr.io/kube-controller-manager:v1.21.1
k8s.gcr.io/kube-scheduler:v1.21.1
k8s.gcr.io/kube-proxy:v1.21.1
k8s.gcr.io/pause:3.4.1
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns/coredns:v1.8.0
[root@k8s-master1 ~]# 

# 默认去k8s.gcr.io/coredns/coredns:v1.8.0路径找,但是更换为阿里云仓库后,会改为registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.0,中间少了一个/coredns,所以报错,可以加--ignore-preflight-errors=ImagePull参数忽略报错后,手动拉取镜像并打标签解决。

# 解决办法加--ignore-preflight-errors=ImagePull参数可以忽略报错
[root@k8s-master1 ~]# kubeadm init --apiserver-advertise-address=10.0.0.9 --apiserver-bind-port=6443 --control-plane-endpoint=10.0.0.100 --ignore-preflight-errors=swap --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version=v1.21.1 --pod-network-cidr=10.10.0.0/16 --service-cidr=10.20.0.0/16 --service-dns-domain=waluna.local --ignore-preflight-errors=ImagePull
......
[kubelet-check] Initial timeout of 40s passed.
[kubelet-check] It seems like the kubelet isn't running or healthy.
[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp [::1]:10248: connect: connection refused.

# 再次报错,说kubelet没有启动,看1.4.4.7.2
1.4.4.7.2 没有关闭 swap

不关闭 swap 会导致 kubelet 无法启动,kubelet不正常运行会导致 kubeadm init 初始化失败

# 从日志可以看出启动kubelet需关闭swap
[root@k8s-master1 ~]# tail -f /var/log/syslog -n0
Oct 26 19:38:11 k8s-master1 systemd[1]: kubelet.service: Service hold-off time over, scheduling restart.
Oct 26 19:38:11 k8s-master1 systemd[1]: kubelet.service: Scheduled restart job, restart counter is at 688.
Oct 26 19:38:11 k8s-master1 systemd[1]: Stopped kubelet: The Kubernetes Node Agent.
Oct 26 19:38:11 k8s-master1 systemd[1]: Started kubelet: The Kubernetes Node Agent.
Oct 26 19:38:11 k8s-master1 kubelet[29127]: Flag --network-plugin has been deprecated, will be removed along with dockershim.
Oct 26 19:38:11 k8s-master1 kubelet[29127]: Flag --network-plugin has been deprecated, will be removed along with dockershim.
Oct 26 19:38:11 k8s-master1 systemd[1]: Started Kubernetes systemd probe.
Oct 26 19:38:11 k8s-master1 kubelet[29127]: I1026 19:38:11.840078   29127 server.go:440] "Kubelet version" kubeletVersion="v1.21.1"
Oct 26 19:38:11 k8s-master1 kubelet[29127]: I1026 19:38:11.840609   29127 server.go:851] "Client rotation is on, will bootstrap in background"
Oct 26 19:38:11 k8s-master1 kubelet[29127]: I1026 19:38:11.843550   29127 certificate_store.go:130] Loading cert/key pair from "/var/lib/kubelet/pki/kubelet-client-current.pem".
Oct 26 19:38:11 k8s-master1 kubelet[29127]: I1026 19:38:11.844650   29127 dynamic_cafile_content.go:167] Starting client-ca-bundle::/etc/kubernetes/pki/ca.crt
Oct 26 19:38:11 k8s-master1 kubelet[29127]: I1026 19:38:11.911348   29127 server.go:660] "--cgroups-per-qos enabled, but --cgroup-root was not specified.  defaulting to /"
Oct 26 19:38:11 k8s-master1 kubelet[29127]: E1026 19:38:11.911566   29127 server.go:292] "Failed to run kubelet" err="failed to run Kubelet: running with swap on is not supported, please disable swap! or set --fail-swap-on flag to false. /proc/swaps contained: [Filename\t\t\t\tType\t\tSize\tUsed\tPriority /dev/sda5                               partition\t1951740\t12\t-2]"
Oct 26 19:38:11 k8s-master1 systemd[1]: kubelet.service: Main process exited, code=exited, status=1/FAILURE
Oct 26 19:38:11 k8s-master1 systemd[1]: kubelet.service: Failed with result 'exit-code'.

# 系统启动了swap
[root@k8s-master1 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        300M        693M        9.8M        976M        1.5G
Swap:          1.9G         12K        1.9G
[root@k8s-master1 ~]# 
# 关闭所有交换分区
[root@k8s-master1 ~]# swapoff -a
[root@k8s-master1 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        300M        692M        9.8M        977M        1.5G
Swap:            0B          0B          0B
[root@k8s-master1 ~]# 

# 再次执行,即可初始化成功
[root@k8s-master1 ~]# kubeadm init --apiserver-advertise-address=10.0.0.9 --apiserver-bind-port=6443 --control-plane-endpoint=10.0.0.100 --ignore-preflight-errors=swap --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version=v1.21.1 --pod-network-cidr=10.10.0.0/16 --service-cidr=10.20.0.0/16 --service-dns-domain=waluna.local --ignore-preflight-errors=ImagePull
......
Your Kubernetes control-plane has initialized successfully!
......
[root@k8s-master1 ~]#