ubuntu搭建k8s及错误处理
ubuntu系统可以在阿里云购买,自己搭虚拟机。
ubuntu系统可以在阿里云购买,自己搭虚拟机
设置主机名
# 根据规划设置主机名【master节点上操作】
hostnamectl set-hostname k8smaster
# 根据规划设置主机名【node1节点操作】
hostnamectl set-hostname k8snode1
# 根据规划设置主机名【node2节点操作】
hostnamectl set-hostname k8snode2
更新 /etc/hosts 文件,添加所有节点的 IP 和主机名:
192.168.0.1 master
192.168.0.2 worker1
192.168.0.3 worker2
更新apt
sudo apt-get update
sudo apt-get upgrade -y
关闭swap
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
关闭setenforce
setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
配置内核模块和 sysctl:
sudo modprobe overlay
sudo modprobe br_netfiltercat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOFsudo sysctl --system
安装 Docker
apt-get uptate
apt install -y docker.io
s配置 Docker 使用 systemd 作为 cgroup 驱动:
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOFsystemctl daemon-reload
sudo systemctl restart docker
如果不能restart docker可能是json文件写的有问题
docker info |grep "Cgroup Driver"
Cgroup Driver: systemd #表明已经更新为了systemd
重置kubeadm(执行kub后用,首次初始化不用)kubeadm reset
下载并添加阿里云的 GPG 密钥:
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
添加阿里云的 Kubernetes 软件源:
sudo tee /etc/apt/sources.list.d/kubernetes.list <<EOF
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial mainEOF
安装特定版本的 Kubernetes 组件
sudo apt-get update
sudo apt-get install -y kubelet=1.23.6-00 kubeadm=1.23.6-00 kubectl=1.23.6-00
sudo apt-mark hold kubelet kubeadm kubectl
初始化
kubeadm init \
--image-repository registry.aliyuncs.com/google_containers \--pod-network-cidr=10.244.0.0/16
--kubernetes-version v1.23.6 \
--ignore-preflight-errors=Swap
kubeadm init \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16
成功
一定要记住token,
没记住
kubeadm token list
如果忘记创建token
kubeadm token create
kubeadm token create --print-join-command
使用kubectl工具 【master节点操作】
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
执行完成后,我们使用下面命令,查看我们正在运行的节点
kubectl get nodes
加入节点 在子节点运行
kubeadm join 47.251.79.171:6443 --token cb4pw9.k2l0nplof1t535x8 --discovery-token-ca-cert-hash sha256:bb76bcfcf963c9f0688a25bbeba65fd241119f76e89e3f58312942f2bd1d092e
获取sha256:openssl x509 pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
openssl dgst -sha256 -hex | sed 's/^.* //'
加入节点成功
如果是为准备状态,安装网络插件
curl https://docs.projectcalico.org/manifests/calico.yaml -O
curl -o calico.yaml https://calico-v3-25.netlify.app/archive/v3.25/manifests/calico.yaml
编辑文件
CALICO_IPV4POOL_CIDR
改成初始化的ip 10.244.0.0/16
grep image calico.yaml
sed -i 's#docker.io/##g' calico.yaml
这样docke比较好拉
sudo kubectl apply -f calico.yaml
kubectl get po -n kube-system
全部准备好
kubectl get node
搭建runcher页面
错误处理
"Failed to run kubelet" err="failed to run Kubelet: misconfiguration: kubelet cgroup driver: \"systemd\" is different from docker cgroup driver: \"cgroupfs\"
vim /etc/docker/daemon.json
cat >> /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://m6qghhcm.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
systemctl daemon-reload
systemctl restart docker
还有出现一大堆错误之前用
sudo kubeadm init \
--apiserver-advertise-address=47.251.9.5 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.6 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
改成
初始化
kubeadm init \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.6 \
--pod-network-cidr=10.244.0.0/16
--ignore-preflight-errors=Swap
错误
在加入节点是,经常超时等就需要配置这个文件
:6443/api/v1/namespaces/kube-public/configmaps/cluster-info?timeout=10s": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
cat /etc/kubernetes/manifests/kube-apiserver.yaml
- --advertise-address=198.11.175.187
- --bind-address=0.0.0.0
- --secure-port=6443
这里之前我的IP选的是公网ip,不知道为什么访问不了,使用下面命令可以看到私有ip通过这个进行访问就可以了
报错The connection to the server 172.18.81.202:6443 was refused - did you specify the right host or port?
没有配置正确的环境 /etc/host
echo "export KUBECONFIG=/etc/kubernetes/kubelet.conf" >> /etc/profile
source /etc/profile
更多推荐
所有评论(0)