安装k8s-初始化及集群搭建02

本文详细介绍了如何从安装Docker开始,通过kubeadm初始化Kubernetes集群,配置Calico网络插件,并在集群中部署Tomcat服务的全过程。包括设置docker镜像加速器,添加工作节点,以及验证网络连通性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

Kubernetes架构

部署及测试

1.安装docker-ce并配置docker镜像加速器和驱动

2.安装初始化k8s需要的软件包

 3.kubeadm初始化k8s集群

4. 扩容k8s集群-添加工作节点

5.安装kubernetes网络组件-Calico

6.测试在k8s创建pod是否可以正常访问网络

7.测试k8s集群中部署tomcat服务


K8s集群角色主机名安装的组件
控制节点hd1.comdocker-ce、kubeadm、kubelet、kubectl、calico
工作节点hd2.comdocker-ce、kubeadm、kubelet、kubectl、
工作节点hd3.comdocker-ce、kubeadm、kubelet、kubectl、

Kubernetes架构

k8s的物理架构是master/node模式:

K8S集群至少需要一个主节点(Master)和多个工作节点(Worker),Master节点是集群的控制节点,负责整个集群的管理和控制,主要用于暴露API、调度部署和对节点进行管理。工作节点主要是运行容器的。

kubelet 负责启动容器或pod

kube-proxy负载均衡 

pod是最小调度单元

pod封装一个或多个容器

部署及测试

1.安装docker-ce并配置docker镜像加速器和驱动

安装docker-ce

[root@hd1.com ~]# yum install doc -y ker-ce-20.10.6 docker-ce-cli-20.10.6 containerd.io 

[root@hd1.com ~]# systemctl start docker && systemctl enable docker.service

配置docker镜像加速器和驱动

[root@hd1.com ~]#vim  /etc/docker/daemon.json

{

  "registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com", "https://rncxm540.mirror.aliyuncs.com"],

  "exec-opts": ["native.cgroupdriver=systemd"]

}

#修改docker文件驱动为systemd,默认为cgroupfs,kubelet默认使用systemd,两者必须一致才可以。

[root@hd1.com ~]# systemctl daemon-reload  && systemctl restart docker

[root@hd1.com ~]# systemctl status docker

上述操作三台机器步骤相同。

2.安装初始化k8s需要的软件包

[root@hd1.com ~]# yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6

[root@hd1.com ~]# systemctl enable kubelet && systemctl start kubelet

[root@hd1.com]# systemctl status kubelet

查看kubelet状态

#上面可以看到kubelet状态不是running状态,这个是正常的,不用管,等k8s组件起来这个kubelet就正常了。

重复此操作到hd2.com和hd3.com上。

注:每个软件包的作用

Kubeadm:  kubeadm是一个工具,用来初始化k8s集群的

kubelet:   安装在集群所有节点上,用于启动Pod的

kubectl:   通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件

 3.kubeadm初始化k8s集群

#把初始化k8s集群需要的离线镜像包上传到hd1.comhd2.comhd3.com机器上,手动解压:

[root@hd1.com ~]# docker load -i k8simage-1-20-6.tar.gz

[root@hd2.com ~]# docker load -i k8simage-1-20-6.tar.gz

[root@hd3.com ~]# docker load -i k8simage-1-20-6.tar.gz

#使用kubeadm初始化k8s集群(在master节点上操作)

[root@hd1.com ~]# kubeadm init --kubernetes-version=1.20.6  --apiserver-advertise-address=192.168.1.11  --image-repository registry.aliyuncs.com/google_containers  --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=SystemVerification

#上面生成的信息是把node节点加入集群用的命令,每个人都不同。

#配置kubectl的配置文件config,相当于对kubectl进行授权,这样kubectl命令可以使用这个证书对k8s集群进行管理

[root@hd1.com ~]# mkdir -p $HOME/.kube

[root@hd1.com ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

[root@hd1.com ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

[root@hd1.com ~]# kubectl get nodes

NAME               STATUS    ROLES                  AGE   VERSION

hd1.com   NotReady   control-plane,master    60s   v1.20.6

此时集群状态还是NotReady状态,因为没有安装网络插件 ,角色已经改变为master。

4. 扩容k8s集群-添加工作节点

使用刚才生成的命令,将hd2.com和hd3.com加入k8s集群

也可是使用下列命令重新生成一个命令。

[root@hd1.com ~]# kubeadm token create --print-join-command

下面在两台工作节点上运行此命令(操作相同)

[root@hd2.com~]# kubeadm join 192.168.1.11:6443 --token vulvta.9ns7da3saibv4pg1     --discovery-token-ca-cert-hash sha256:72a0896e27521244850b8f1c3b600087292c2d10f2565adb56381f1f4ba7057a

#看到上面说明hd2.com和hd3.com节点已经加入到集群了,充当工作节点

#在hd1.com上查看集群节点状况:

[root@hd1.com ~]# kubectl get nodes

#可以看到hd2.comhd3.com已经加入集群,角色为空,<none>就表示这个节点是工作节点。

#可以把hd2.comhd3.com的ROLES变成work,按照如下方法:

[root@hd1.com ~]# kubectl label node hd2.com node-role.kubernetes.io/worker=worker

[root@hd1.com ~]# kubectl label node hd3.com node-role.kubernetes.io/worker=worker

 # hd2.comhd3.com的ROLES角色已经改变。(通过更改label标签来实现)

5.安装kubernetes网络组件-Calico

上传calico.yaml到hd1.com上,使用yaml文件安装calico 网络插件 。

[root@hd1.com ~]# kubectl apply -f  calico.yaml

查看pod和集群状态

[root@hd1.com ~]# kubectl get pods -n kube-system

 [root@hd1.com ~]# kubectl get nodes

 #STATUS状态是Ready,说明k8s集群正常运行了。

6.测试在k8s创建pod是否可以正常访问网络

#把busybox-1-28.tar.gz上传到hd2.comhd3.com节点,手动解压

[root@hd2.com ~]# docker load -i busybox-1-28.tar.gz

[root@hd3.com ~]# docker load -i busybox-1-28.tar.gz

#master联网测试

[root@hd1.com ~]# kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh

#进入shell后ping www.baidu.com测试网络

 #通过上面可以看到能访问网络,说明calico网络插件已经被正常安装了。

7.测试k8s集群中部署tomcat服务

测试k8s集群中部署tomcat服务

#把tomcat.tar.gz上传到hd2.comhd3.com,手动解压

[root@hd2.com ~]# docker load -i tomcat.tar.gz

[root@hd3.com ~]# docker load -i tomcat.tar.gz

[root@hd1.com ~]# kubectl apply -f tomcat.yaml

[root@hd1.com ~]#  kubectl get pods

查看ip地址

[root@hd1 ~]# kubectl get pods -o wide|grep 10

[root@hd1.com ~]# kubectl apply -f tomcat-service.yaml

[root@hd1.com ~]# kubectl get svc

 #在浏览器访问hd2.com节点的ip:30080即可请求到浏览器

至此k8s的基本部署就已经完毕了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值