国内不fq安装K8S四: 安装过程中遇到的问题和解决方法

国内不fq安装K8S一: 安装docker

国内不fq安装K8S二: 安装kubernet

国内不fq安装K8S三: 使用helm安装kubernet-dashboard

国内不fq安装K8S四: 安装过程中遇到的问题和解决方法

4 安装过程中遇到的问题和解决方法

4.1 常见问题

(1) Kubernetes Pod错误ErrImagePull?

两种办法:

1 直接docker pull gcr.azk8s.cn/XXX,然后tag成gcr.io/XXX或其他的即可解决。

2 编辑pod的配置

kubectl edit deployment tiller-deploy -n kube-system

找到相应的源地址,如"gcr.io/kubernetes-helm/tiller"替换成亚马逊的地址"gcr.azk8s.cn/kubernetes-helm/tiller"即可

(2) kube-proxy有一个成功开启了ipvs另一个没有成功开启ipvs

有可能是有一个节点的下面这条命令没执行好

$ cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

(3) 节点上要运行其他程序,不能关闭swap

修改kubernet的配置是一样的:

在/etc/sysctl.d/k8s.conf后添加

vm.swappiness=0

使生效

sysctl -p /etc/sysctl.d/k8s.conf

修改/etc/sysconfig/kubelet加入

KUBELET_EXTRA_ARGS=--fail-swap-on=false

(4)node上多网卡导致的报错

"E0110 23:48:52.242726 1 main.go:127] Failed to create SubnetManager: error retrieving pod spec for 'kube-system/kube-flannel-ds-xbbqs': Get https://10.96.0.1:443/api/v1/namespaces/kube-system/pods/kube-flannel-ds-xbbqs: dial tcp 10.96.0.1:443: i/o timeout"

修改kube-flannel.yml添加"--iface=ens32"一句指定网卡

......
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.11.0-amd64
command:
- /opt/bin/flanneld
args:
- --ip-masq
- --kube-subnet-mgr
- --iface=ens32
......

详见:flannel issues 39701: https://github.com/kubernetes/kubernetes/issues/39701

(5)helm报,各种 "TILLER: dial tcp 10.96.0.1:443: i/o timeout"

有可能是多个问题导致的这个错误,我的错误是docker-ce19.03.1不再kubernet的支持列表中导致的。因此我更换了docker版本解决的。

如果是其他问题,可以通过执行"kubectl logs XXX -n XXnamespaceXX"和"kubectl describe pod XXXXX -n XXX"定位

(6)kubelet启动的时提示masked

systemctl unmask kubelet.service

(7)token忘了或者过期

解决办法如下:

https://blog.csdn.net/weixin_44208042/article/details/90676155

4.2 常用的操作命令

查看所有pod的信息:

kubectl get pod --all-namespaces -o wide

查看system的pod

kubectl get pod -n kube-system

查看一个pod的错误信息

kubectl describe pod coredns-5c98db65d4-djt9j --namespace=kube-system

删除一个pod(其实普通的删除等于重启)

kubectl delete po <your-pod-name> -n <name-space> --force --grace-period=0
kubectl delete po tiller-deploy-7bf78cdbf7-cr5mj -n kube-system --force --grace-period=0

修改部pod的配置:

``bash

kubectl edit deployment tiller-deploy -n kube-system

查看日志:
```bash
kubectl logs -f coredns-5c98db65d4-mp6vg -n kube-system

查看所有节点:

kubectl get nodes

tty到一个已经运行的pod中

kubectl attach curl-6bf6db5c4f-btwbm -it

带label查看节点:

kubectl get nodes --show-labels

给节点打label

kubectl label node kub1 node-role.kubernetes.io/edge=

4.3 比较好的博客

青蛙小白:https://blog.frognew.com/2019/07/kubeadm-install-kubernetes-1.15.html

掘金:https://juejin.im/post/5cb7dde9f265da034d2a0dba

安装Kubernetes节点: https://www.cnblogs.com/xieyifeng/p/9383236.html

helm dashboard: https://mp.weixin.qq.com/s/S9OvZa7oW7qo_9m4OznVtA

k8s基础知识: https://www.jianshu.com/p/95c2bc74e2b2?utm_source=oschina-app

官网:https://yeasy.gitbooks.io/docker_practice/content/opensource/

亚马逊集成环境:https://github.com/Azure/container-service-for-azure-china

上一篇:蘑菇街TeamTalk编译连接过程中遇到的问题及解决方法(iOS)


下一篇:[C# 基础知识系列]专题十六:Linq介绍