K8s配置的时候出现的常见问题
Q1: master节点kubectl get nodes 出现的错误
或者
解决方法:
cat <<EOF >> /root/.bashrc
export KUBECONFIG=/etc/kubernetes/admin.conf
EOFsource /root/.bashrc
重新执行 kubectl get nodes
记得需要查看一下自己的hosts文件
查看自己的 ip, 使用 ifconfig
进行替换相关的地址和自己的主机名
Q2 master节点拉取镜像失败
修改镜像地址为阿里的,注意每个安装有 kubelet 的节点都需要修改(master节点和worker节点都需要)
# 生成 config.toml 文件,我在解决第3个问题的时候删除了
containerd config default > /etc/containerd/config.toml# 按照官网CRI部分修改如下两个配置
vim /etc/containerd/config.toml[plugins."io.containerd.grpc.v1.cri"]# sandbox_image = "registry.k8s.io/pause:3.6"sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.6"…[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]SystemdCgroup = true# 然后:wq保存一下# 记得需要重启一下
systemctl restart containerd# 修改crictl.yaml的CRI
cat <<EOF | sudo tee /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
EOF
需要修改的地方截图如下:
Q3 master节点 kubeadm reset 错误
解决办法
# 删除/etc/cni/net.d目录
rm /etc/cni/net.d
# 重置ipvsadm表
ipvsadm --clear# 检查$HOME/.kube/config文件的内容
Q4 master节点 kubectl init 拉去镜像失败
解决办法:
# 指定阿里云镜像去拉去 --kubernetes-version=版本号
kubeadm init --kubernetes-version=v1.28.2 --image-repository=registry.aliyuncs.com/google_containers
Q5 master节点没有证书密钥
解决办法:
Ubuntu安装golang-cfssl
sudo apt-get update
sudo apt-get install -y golang-cfssl# 如果没有go环境需要执行下面命令先安装 golang
sudo apt-get install -y golang
创建一共ca-config文件:vim ca-config.json
{"signing": {"default": {"expiry": "8760h"},"profiles": {"kubernetes": {"usages": ["signing","key encipherment","server auth","client auth"],"expiry": "8760h"}}}
}
创建CA证书签名请求文件ca-csr.json
{"CN": "Kubernetes","key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "Beijing","O": "k8s","OU": "System"}]
}
生成证书密钥
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
创建一个名为admin-csr.json的文件
{"CN": "admin","hosts": [],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "Beijing","O": "system:masters","OU": "Kubernetes The Hard Way"}]
}
然后,使用cfssl生成客户端证书和私钥
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin
最后拷贝文件到 /etc/kubernetes/pki 目录中
sudo cp admin.pem /etc/kubernetes/pki/admin.crt
sudo cp admin-key.pem /etc/kubernetes/pki/admin.key
最后执行kubectl get nodes
就可以正常查看自己的k8s集群了
Q6 kubeadm init 创建失败的问题
解决办法:
# 创建一共config文件
vim config.yamlexport KUBECONFIG=config.yamlkubeadm init --kubernetes-version=v1.28.2 --image-repository=registry.aliyuncs.com/google_containers
config.yaml文件
apiVersion: v1
clusters:
- cluster:certificate-authority: /etc/kubernetes/pki/ca.crtserver: https://<master-ip>:6443name: kubernetes
contexts:
- context:cluster: kubernetesuser: kubernetes-adminname: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-adminuser:client-certificate: /etc/kubernetes/pki/admin.crtclient-key: /etc/kubernetes/pki/admin.key
Q7 master没有ipvsadm
解决办法:
# 安装
apt install -y ipset ipvsadm# 随后执行cat > /etc/modules-load.d/kubernetes.conf << EOF
# /etc/modules-load.d/kubernetes.conf
# Linux 网桥支持
br_netfilter
# IPVS 加载均衡器
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
# IPv4 连接跟踪
nf_conntrack_ipv4
# IP 表规则
ip_tables
EOF
添加权限
chmod a+x /etc/modules-load.d/kubernetes.conf