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_netfilter

cat <<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
EOF

sudo 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"]
}
EOF

systemctl 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 main

EOF

安装特定版本的 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
 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐