虚拟机Ubuntu22.04搭建k8s集群

虚拟机上搭建K8S集群

零基础搭建k8s集群一次成功,坑太多我都替你踩过了(文档) (qq.com)

Ubuntu 22安装K8S 1.26实战 - 掘金 (juejin.cn)

配置ubuntu系统国内源

为了避免遭遇科学上网的问题,我们需要配置一下国内的源;

备份默认源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

 sudo rm -rf /etc/apt/sources.list

配置国内源

 sudo vi /etc/apt/sources.list

配置国内源即可:

ubuntu换镜像源(ubuntu换源)_乌班图镜像源_Fighting_1997的博客-优快云博客

 1.创建虚拟机

关闭swap分区   sudo swapoff -a

永久禁用    sudo vi /etc/fstab

将最后一行注释后重启系统即生效

 #/swap.img      none    swap    sw      0       0

  关闭防火墙   sudo ufw status

sudo ufw disable

2安装docker

sudo apt update

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update

配置阿里云镜像源

需要登陆阿里云:阿里云登录页 (aliyun.com)

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://hhydrthc.mirror.aliyuncs.com"]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

sudo apt install docker-ce docker-ce-cli containerd.io

sudo systemctl start docker

sudo systemctl enable docker

sudo docker –version

3安装kubeadm(每台机器都得装)

构建一个脚本,vim installAdn.sh  ,然后执行 sh installAdn.sh

#!/bin/bash
apt update && apt install apt-transport-https
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
add-apt-repository 
"deb [arch=amd64] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"
apt-get update
apt-cache madison kubelet kubectl kubeadm |grep 
'1.22.7-00' 
apt install -y kubelet=1.22.7-00 kubectl=1.22.7-00 kubeadm=1.22.7-00

4禁用swap

vim /etc/default/kubelet

KUBELET_EXTRA_ARGS="--fail-swap-on=false"

systemctl daemon-reload && systemctl restart kubelet

5 在master节点进行初始化

kubeadm init \
  --kubernetes-version=v1.22.7 \
  --image-repository registry.aliyuncs.com/google_containers \
  --pod-network-cidr=10.24.0.0/16 \
  --ignore-preflight-errors=Swap

pod-network-cidr 这个是自定义资源,pod网段不要与主机名相同

初始化成功后执行打印信息的命令

并记住工作节点的加入命令

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/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.30.136:6443 --token 1ya3u9.pq6ndx5rmin464cn \

       --discovery-token-ca-cert-hash sha256:9ad7086cb1a99d942861e060956d6d0b70ec02d8996e495416cc2b8c16a778f5

6安装Calico CNI插件

安装Calico CNI插件:使用kubectl安装Calico CNI插件。阿里云的镜像仓库通常包含Calico的镜像,因此可以直接使用官方提供的YAML文件来安装

kubectl apply -f https://docs.projectcalico.org/v3.22/manifests/calico.yaml

等待Calico插件的部署完成,可以使用以下命令检查Calico相关的Pod是否在运行:

kubectl get pods -n kube-system | grep calico

也可以安装指示面板

7 工作节点配置kubectl

要将 master 节点上的 Kubernetes 配置文件 admin.conf 复制到从节点的相同目录下

scp xiao@master:/etc/kubernetes/admin.conf /etc/kubernetes/

这将从 master 节点上的 admin.conf 文件复制到目标节点(从节点)上的 /etc/kubernetes/ 目录中。

实现上面确保 master 节点上的 SSH 服务正在运行

sudo systemctl status ssh

没有就安装sudo apt-get install openssh-server

如果还是没有权限,那就是主机不允许其他用户访问这个文件,那就修改权限

sudo chmod 644 /etc/kubernetes/admin.conf

然后配置mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

就可以在工作节点上使用kubectl

8 修改主节点,可以调度pod在主节点上运行

kubectl describe nodes master | grep -E '(Taints|Roles)' 查看主节点的taints,应该是不允许调度

kubectl taint nodes master node-role.kubernetes.io/master-

这将删除掉主节点上的 Taints,允许普通工作负载的 Pod 调度到主节点上。

除了上面的修改,我们也可以给主节点一个worker标签, 将其标记为工作节点。

kubectl label nodes master node-role.kubernetes.io/worker=

现在,您可以创建 Pod,而不必删除主节点上的 Taints。Pod 将会根据节点的标签和调度策略,随机调度到工作节点和主节点上。

我两个都做了,这两个命令不会改变主节点的角色,它们只会修改节点的 Taints 和标签,以影响 Pod 的调度行为和为节点添加附加信息。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值