K8s安装报错小总结
写在前面:恶心!
安装流程:
1.准备工作机器
首先安装docker,在此不赘述
前提:至少准备两台服务器或者虚拟机,我使用的是三台centOS7虚拟机
三台机器全部执行以下代码
#各个机器设置自己的域名
hostnamectl set-hostname xxxx
# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
#分批执行
#关闭swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
#分批执行
#允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
#分批执行
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system2.所有机器安装kubelet、kubeadm、kubectl
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF
#分批执行
sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes
sudo systemctl enable --now kubelet3.下载pod以及初始化(所有机器执行)
#分批执行
sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF
#分批执行
chmod +x ./images.sh && ./images.sh
#所有机器添加master域名映射,第一次安装k8s就不要改
echo "192.168.45.7 cluster-endpoint" >> /etc/hosts4.主节点初始化
#这里的apiserver-advertise-address和control-plane-endpoint必须和上述设置的对应
#pod-network-cidr不要和apiserver-advertise-address有重合冲突
#主机IP是192.168的可以把pod-network-cidr设置为10.244.0.0/16
kubeadm init \
--apiserver-advertise-address=192.168.45.7 \
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16执行完之后不出意外会成功,博主这里没问题
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:
kubeadm join cluster-endpoint:6443 --token 5pxtia.tq7bm3ebtjjuo6b4 \
--discovery-token-ca-cert-hash sha256:c722a2fcf0ec54a8dd9d33864873ab1bf23eeaea2074dff753eeda5b88fc93c2 \
--control-plane
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join cluster-endpoint:6443 --token 5pxtia.tq7bm3ebtjjuo6b4 \
--discovery-token-ca-cert-hash sha256:c722a2fcf0ec54a8dd9d33864873ab1bf23eeaea2074dff753eeda5b88fc93c2token24小时之后重置,新令牌获取方式
kubeadm token create --print-join-command成功后执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config安装网络组件 calico
curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O
kubectl apply -f calico.yaml工作节点加入主节点之前的准备工作
1.在链接主节点时一定要关闭防火墙,要主节点关闭防火墙,要不然会一直等待
systemctl stop firewalld
firewall-cmd --state #查看状态2.加入失败后工作节点重新加入主节点时要在工作节点执行
kubeadm reset重置文件
对应报错:
3.完整版/etc/docker/daemon.json ,要新增
"exec-opts": ["native.cgroupdriver=systemd"]
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker未修改/etc/docker/daemon.json 工作节点加入主节点时报错:
节点已存在:

到这的时候已经开始心烦了,我就直接重新初始化了一边主节点配置
报错:k8s hostname “xyz“ could not be reached
#执行 vim /etc/hosts #新增 127.0.0.1 xyz
初始化步骤:
#1.在master节点执行
kubeadm reset
#2.手动清除配置信息,这一步很关键:
rm -rf /root/.kube
rm -rf /etc/cni/net.d
#清理ipvsadm
yum install -y ipvsadm
ipvsadm -C
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
#随后主节点重新执行4.初始化,执行后再加入工作节点前记得给工作节点reset
k8s常用命令
#查看所有pod
kubectl get pods -A
#实时查看
kubectl get pods -A -w #或者
watch -n 1 kubectl get pods -A
#查看节点
kubectl get nodes
#查看名称空间
kubectl get ns
#查看 xxn 命名空间下的pods
kubectl get pods -n xxn
#删除 xxn 命名空间
kubectl delete ns xxn
#创建xxn 命名空间
kubectl create ns xxn
#查看所有命名空间
kubectl get ns
#dashboard部署
#1.执行
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yamlget pod查看 运行成功
http://cdn.octopusyz.top/blog_pic/markdownpic/image-20240129195641239.png
2.设置访问端口
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
kubectl get svc -A |grep kubernetes-dashboard
访问虚拟机机器的 https:// IP:30242返回 登录页即成功

评论区