Docker学习第七天——Kubernetes安装环境搭建(二)

一、前言

        搭建kubernetes需要充足的时间与耐心,遇到报错时要及时排查,不要焦急,一定能搭建成功!

二、搭建流程

2.1 安装doccker服务与配置

        安装docker-ce

[root@hd1.com ~]# for i in 1 2 3;do ssh hd${i}.com yum -y install docker-ce-20.10.6 docker-ce-cli-20.10.6 containerd.io && systemctl start docker && systemctl enable docker.service ;done

        配置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
[root@hd1.com ~]#for i in 1 2 3;do scp /etc/docker/daemon.json hd${i}.com:/etc/docker/ ;done
[root@hd1.com ~]# for i in 1 2 3;do ssh hd${i}.com systemctl daemon-reload  && systemctl restart docker ;done

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

[root@hd1.com ~]# for i in 1 2 3;do ssh hd${i}.com yum -y install kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6 && systemctl enable kubelet && systemctl start kubelet && systemctl status kubelet ;done

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

2.2 安装初始化k8s所需软件包

[root@hd1.com ~]# for i in 1 2 3;do ssh hd${i}.com yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6 && systemctl enable kubelet && systemctl start kubelet & systemctl status kubelet ;done

执行后可看到kubelet不是running状态,是因为k8s组件还未完全,是正常的

每个软件包的作用:       

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

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

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

 2.3 kubeadm初始化k8s集群

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

[root@hd1.com ~]# rz
[root@hd1.com ~]# for i in 2 3;do scp k8simage-1-20-6.tar.gz hd${i}.com:/root/
[root@hd1.com ~]# for i in 2 3;do ssh hd${i}.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

        注:

①--image-repository registry.aliyuncs.com/google_containers:手动指定仓库地址为registry.aliyuncs.com/google_containers。kubeadm默认从k8s.grc.io拉取镜像,但是k8s.gcr.io访问不到,所以需要指定从registry.aliyuncs.com/google_containers仓库拉取镜像。

②初始化后所给的命令是把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状态,因为没有安装网络插件。

 2.4 扩容k8s集群

        在hd1.com上查看加入节点的命令:

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

        显示如下:

kubeadm join 192.168.1.11:6443 --token vulvta.9ns7da3saibv4pg1     --discovery-token-ca-cert-hash sha256:72a0896e27521244850b8f1c3b600087292c2d10f2565adb56381f1f4ba7057a

        使用上述命令或初始化最后所给的命令,把两个node节点加入k8s集群:

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

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

[root@hd1.com ~]# kubectl get nodes
NAME              STATUS     ROLES                  AGE     VERSION
hd1.com   NotReady   control-plane,master   53m     v1.20.6
hd2.com     NotReady   <none>                 59s     v1.20.6
hd3.com     NotReady   <none>                 59s     v1.20.6

        可以看到hd2.comhd3.com的ROLES角色为空,<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

        注意:上面状态都是NotReady状态,说明没有安装网络插件

 2.5 安装kubernetes网络组件-Calico

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

[root@hd1.com ~]# rz
[root@hd1.com ~]# kubectl apply -f  calico.yaml
[root@hd1.com ~]# kubectl get nodes
NAME              STATUS   ROLES                  AGE     VERSION
hd1.com   Ready    control-plane,master   58m     v1.20.6
hd2.com     Ready    <none>                 5m46s   v1.20.6
hd3.com     Ready    <none>                 5m46s   v1.20.6
[root@hd1.com ~]# kubectl get pod -n kube-system

2.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
[root@hd1.com ~]# kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh
/ # ping www.baidu.com
PING www.baidu.com (39.156.66.18): 56 data bytes
64 bytes from 39.156.66.18: seq=0 ttl=127 time=39.3 ms

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

2.7 测试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
NAME       READY   STATUS    RESTARTS   AGE
demo-pod   1/1     Running   0          10s
#查看ip地址
[root@hd1 ~]# kubectl get pods -o wide|grep 10
demo-pod   1/1     Running   0          2m15s   10.244.156.132   hd2.com

[root@hd1.com ~]# kubectl apply -f tomcat-service.yaml
[root@hd1.com ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.255.0.1       <none>        443/TCP          158m
tomcat       NodePort    10.255.227.179   <none>        8080:30080/TCP   19m

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值