侧边栏壁纸
  • 累计撰写 21 篇文章
  • 累计创建 14 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

K8s小结

Administrator
2024-01-29 / 0 评论 / 0 点赞 / 23 阅读 / 9912 字

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 --system

2.所有机器安装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 kubelet
3.下载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/hosts

4.主节点初始化
#这里的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:c722a2fcf0ec54a8dd9d33864873ab1bf23eeaea2074dff753eeda5b88fc93c2

token24小时之后重置,新令牌获取方式

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重置文件

  • 对应报错:

image-20240129184558716.png

  • 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 工作节点加入主节点时报错:

image-20240129185250634.png

  • 节点已存在:

    image-20240129192816761

到这的时候已经开始心烦了,我就直接重新初始化了一边主节点配置

  • 报错: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.yaml

get pod查看 运行成功

image-20240129195641239

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

image-20240129195841200

访问虚拟机机器的 https:// IP:30242返回 登录页即成功


0

评论区