ubuntu通过Kubeadmin部署K8s集群
热度🔥: loading...
通过vmware虚拟机安装两个ubuntu系统,部署k8s集群。其中要把虚拟机的网卡模式要选择为桥接模式(默认为NAT)
ubuntu版本:

关闭SWAP内存
-
k8s要求关闭电脑的swap内存,修改**/etc/fstab**文件, 注释掉红框内的两行:

-
然后重启电脑reboot
-
使用命令free -m查看虚拟内存, 可以看到swap内存已经为0了

安装和配置docker
-
安装docker:
sudo apt install docker.io -
设置开机运行docker:
systemctl enable docker.service -
docker -v 查看docker版本

-
修改docker下载镜像为国内源,编辑**/etc/docker/daemon.json**:
sudo vim /etc/docker/daemon.json 打开后输出以下内容:
{ "registry-mirrors": [ "https://dockerhub.azk8s.cn", "https://reg-mirror.qiniu.com", "https://quay-mirror.qiniu.com" ], } -
修改cgroups。docker用它来实现容器的隔离,cgroups是docker默认使用的方式,而k8s使用的隔离工具是systemd,如果两个隔离的方式不同的话可能引起异常,所以芭doker的也修改为systemd,在此编辑**/etc/docker/daemon.json**,添加如下内容
"exec-opts": ["native.cgroupdriver=systemd"]

-
重启docker
sudo service docker restart -
查看cgroups的类型已经修改为了systemd

为了避免每次都要sudo才能执行docker的相关操作,可以把当前用户加入docker组里:
sudo gpasswd -a ${USER} docker // 把当前用户加入docker用户组
newgrp - docker // 用户组切换为docker
之后就可以直接执行docker的相关操作了
安装k8s
安装k8s主要是安装三个主要组件kubelet、kubeadm以及kubectl:
kubelet:k8s的核心服务kubeadm: 这个是用于快速安装 k8s 的一个集成工具,我们在master1和worker1上的 k8s 部署都将使用它来完成kubectl: k8s 的命令行工具,与k8s的交互都是通过它来完成
由于某些原因,,它们的下载地址不存在了。所以我们需要用国内的镜像站来下载,也很简单,依次执行下面五条命令即可。
# 使得 apt 支持 ssl 传输
sudo apt install -y apt-transport-https
# 下载 gpg 密钥
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
# 添加 k8s 镜像源
sudo bash -c 'cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF'
# 更新源列表
sudo apt update
# 下载 kubectl,kubeadm以及 kubelet
sudo apt install -y kubelet kubeadm kubectl
配置master节点
-
修改master的ip为
静态ip -
使用
kubeadm init命令初始化master节点:# --apiserver-advertise-address对应的ip地址需要修改自己机器的地址 sudo kubeadm init --apiserver-advertise-address=192.168.1.6 --image-repository registry.aliyuncs.com/google_containers \ --pod-network-cidr=10.244.0.0/16说明一下各个参数的含义:
--apiserver-advertise-address: k8s 中的主要服务apiserver的部署地址,填自己的管理节点 ip--image-repository: 拉取的 docker 镜像源,因为初始化的时候kubeadm会去拉 k8s 的很多组件来进行部署,所以需要指定国内镜像源,下不然会拉取不到镜像。-pod-network-cidr: 这个是 k8s 采用的节点网络,因为我们将要使用flannel作为 k8s 的网络,所以这里填10.244.0.0/16就好
-
虽然配置了image-repository,但是依然会发现报无法拉取镜像的错误。
-
我们根据报错只能收到去docker.hub上去手动安装对应的docker镜像

这儿以第一个错为例可以看到是拉取
kube-apiserver:v1.18.6的版本出错了
-
我们去 dockerhub上搜索对应的镜像

-
我们选择第二个,然后在其中找到对应版本的镜像

-
复制镜像的下载地址:

-
下载镜像:

-
需要对下载镜像打
tag,关联k8s需要的镜像名字

-
-
对所有报错的镜像,执行同样的操作。执行
sudo kubeadm reset重置环境,再重新执行kubeadm Init即可:sudo kubeadm init --apiserver-advertise-address=192.168.1.6 --image-repository registry.aliyuncs.com/google_containers \ --pod-network-cidr=10.244.0.0/16如果出现了下面的字样就表示安装成功了:

红框中的kubeadm join指令需要复制下来,其他的节点加入集群时需要用到的指令,如果忘了就执行kubeadm token create --print-join-command重新生成一条。
如果在安装中出现了任何错误,需要执行sudo kubeadm reset重置环境以后,再执行上面的kubeadm init指令
配置kubectl工具
-
执行下面的命令
mkdir -p ~/.kube sudo cp /etc/kubernetes/admin.conf ~/.kube/config sudo chown -R `whoami`:`whoami` ~/.kube -
测试是否可用:
kubectl get nodes如果能看到下面类似的结果就表示可以用了

部署 flannel 网络
flannel是一个专门为 k8s 设置的网络规划服务,可以让集群中的不同节点主机创建的 docker 容器都具有全集群唯一的虚拟IP地址。想要部署flannel的话直接执行下述命令即可:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
由于raw.githubusercontent.com被墙了,所以需要现在IpAdress.com输入raw.githubusercontent.com查询ip地址然后添加到hosts文件
-
查询ip

-
修改hosts文件,
sudo vim /etc/hosts,添加查询到的ip地址
如果输出了下面类似的内容,则表示安装成功:

至此k8s的master节点部署完成
克隆一个worker的虚拟机
woker节点,也需要安装K8s和docker相关工具,为了方便我们之间从master虚拟机克隆一台来作为node(克隆前需要先关闭虚拟机):

需要注意克隆类型选择完整克隆

克隆成功后进入worker机器 由于master是设置的静态ip,克隆出来的虚拟机ip会有冲突,所以我们还需要修改ip地址。
将 node 节点加入网络
-
由于我们node节点是从master里克隆出来的,所以主机名会重复,我们需要修改主机名为node:
sudo hostnamectl set-hostname node再使用hostname查看改动是否生效:

-
执行master节点生成的
kubeadm join指令sudo kubeadm join 192.168.1.6:6443 --token purbtm.12d7g98hq3kljqof --discovery-token-ca-cert-hash sha256:c0b3f8da3ae4a668e3159716f4a821adf32166940103ac807f19d5c9df46a1e2注意不要直接复制,每个机器都会不一样。
如果执行错误了,同样需要执行
kubeadm reset重置,再重新执行命令如果出现了下面类似的输出,就表示成功了:

-
回到master节点,执行
kubectl get nodes查看节点情况,可以看出node已经加了节点:
请到客户端“主题--自定义配置--valine”中填入ID和KEY