国内不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