K8S搭建以及常见问题

K8S搭建以及所遇到的问题

Kubernetes上安装Metallb

1
kubectl edit configmap -n kube-system kube-proxy

执行上方命令,进入vim面板后,使用“/”键进行搜索,然后进行修改

1
2
mode: ""   改为  mode: "ipvs"
strictARP: false 改为 strictARP: true

拉取yaml文件

1
2
3
4
#官方镜像
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml
#国内镜像
kubectl apply -f https://raw.githubusercontent.com/xiaohh-me/kubernetes-yaml/main/network/metallb/metallb-native-v0.14.8.yaml

验证是否安装完成(当ready的数量对上和STATUS状态都为Running的时候则安装完成)

1
kubectl get all -o wide -n metallb-system

编辑meatllb.yaml文件

1
vim meatllb.yaml#进入vim编辑面板
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: first-pool
namespace: metallb-system
spec:
addresses:
- 172.18.8.83-172.18.8.89
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: example
namespace: metallb-system
spec:
ipAddressPools:
- first-pool #此处应该与上面spec的IP地址池同名

在执行该文件

1
kubectl apply -f meatllb.yaml

两台ubuntu进行ssh连接

kubectl获取pod列表时,连接被拒绝

1
2
[root@localhost ~]# kubectl get nodes
The connection to the server localhost:8080 was refused - did you specify the right host or port?

复制config文件到指定目录,重启

1
2
3
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
source ~/.bash_profile

主节点生成token

1
kubeadm token create --print-join-command

工作节点加入节点时使用生成的token(使用cri-docker搭建集群时需要添加)

1
--cri-socket /var/run/cri-dockerd.sock

当工作节点加入一个新的主节点时

彻底卸载kubeadm、kubectl、kubelet,再重新安装

1
2
3
4
5
6
7
8
9
10
11
sudo apt-get purge kubeadm kubectl kubelet kubernetes-cni kube*   #删除软件包
sudo apt-get autoremove
sudo yum remove -y kubeadm kubectl kubelet kubernetes-cni kube*
sudo yum autoremove -y
systemctl stop kubelet #停止服务清理配置
systemctl disable kubelet
rm -rf /etc/systemd/system/kubelet.service
rm -rf /etc/systemd/system/kube*
sudo rm -rf ~/.kube #清理kubernetes配置
sudo rm -rf /etc/kubernetes/
sudo rm -rf /var/lib/kube*

重新安装

1
2
3
4
5
6
apt-get update && apt-get install -y apt-transport-https
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl # 锁定版本,apt upgrade时不会更新