四、kubeadm单master

网友投稿 739 2022-09-02

四、kubeadm单master

四、kubeadm单master

1、初始化k8s软件包

k8s01、k8s02、k8s03操作:for i in *.gzdodocker load -i $idonedocker load -i k8simage-1-20-6.tar.gzyum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6systemctl enable kubelet && systemctl start kubeletsystemctl status kubelet#上面可以看到kubelet状态不是running状态,这个是正常的,不用管,等k8s组件起来这个kubelet就正常了。#注:每个软件包的作用#Kubeadm: kubeadm是一个工具,用来初始化k8s集群的#kubelet: 安装在集群所有节点上,用于启动Pod的#kubectl: 通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件查看创建集群需要的镜像版本kubeadm config images list [--kubernetes-version ]kubeadm config images list --kubernetes-version v1.20.6[root@k8s01 ~]# kubeadm config images list --kubernetes-version v1.20.6k8s.gcr.io/kube-apiserver:v1.20.6k8s.gcr.io/kube-controller-manager:v1.20.6k8s.gcr.io/kube-scheduler:v1.20.6k8s.gcr.io/kube-proxy:v1.20.6k8s.gcr.io/pause:3.2k8s.gcr.io/etcd:3.4.13-0k8s.gcr.io/coredns:1.7.0国内拉取镜像脚本kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.20.6拉取的是阿里的镜像,可以打tag成k8s.gcr.io/kube-apiserver:v1.20.6格式

2、kubeadm初始化k8s集群

2、kubeadm初始化k8s集群kubeadm init --kubernetes-version=1.20.6 --apiserver-advertise-address=192.168.10.131 --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仓库拉取镜像。显示如下,说明安装完成:

#配置kubectl的配置文件config,相当于对kubectl进行授权,这样kubectl命令可以使用这个证书对k8s集群进行管理mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config[root@k8s01 ~]# kubectl get nodesNAME STATUS ROLES AGE VERSIONk8s01 NotReady control-plane,master 3m8s v1.20.6#此时集群状态还是NotReady状态,因为没有安装网络插件

3、扩容k8s集群-添加第一个工作节点

在k8s01上查看加入节点的命令:[root@k8s01 ~]# kubeadm token create --print-join-commandkubeadm join 192.168.10.131:6443 --token m0h0jw.26okz033dler19aw --discovery-token-ca-cert-hash sha256:5af17f226bf9c487cfb6907b8c175234f0c55ff9c00953830e9042090253a6aa把k8s02加入k8s集群:直接执行命令就好

4、扩容k8s集群-添加第二个工作节点

在k8s01上查看加入节点的命令:[root@k8s01 ~]# kubeadm token create --print-join-commandkubeadm join 192.168.10.131:6443 --token hr47pk.gjozs0ecnx8vmxac --discovery-token-ca-cert-hash sha256:5af17f226bf9c487cfb6907b8c175234f0c55ff9c00953830e9042090253a6aa把k8s03加入k8s集群:直接执行命令就好

5、完善NODE ROLE

[root@k8s01 ~]# kubectl get nodesNAME STATUS ROLES AGE VERSIONk8s01 NotReady control-plane,master 9m54s v1.20.6k8s02 NotReady 2m54s v1.20.6k8s03 NotReady 62s v1.20.6#可以看到k8s02、k8s03的ROLES角色为空,就表示这个节点是工作节点。#可以把k8s02和k8s03的ROLES变成work,按照如下方法:kubectl label node k8s02 node-role.kubernetes.io/worker=workerkubectl label node k8s03 node-role.kubernetes.io/worker=worker[root@k8s01 ~]# kubectl get nodesNAME STATUS ROLES AGE VERSIONk8s01 NotReady control-plane,master 12m v1.20.6k8s02 NotReady worker 5m3s v1.20.6k8s03 NotReady worker 3m11s v1.20.6注意:上面状态都是NotReady状态,说明没有安装网络插件

6、安装网络组件-Calico

上传calico.yaml到k8s01上,使用yaml文件安装calico 网络插件 。kubectl apply -f calico.yamlkubectl get pod -n kube-system#注:在线-配置文件地址是: ~]# kubectl get pod -n kube-system -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATEScalico-kube-controllers-6949477b58-qhh96 1/1 Running 0 2m52s 10.244.236.130 k8s02 calico-node-kfx7z 1/1 Running 0 2m52s 192.168.10.132 k8s02 calico-node-khz5w 1/1 Running 0 2m52s 192.168.10.131 k8s01 calico-node-z9qr9 1/1 Running 0 2m52s 192.168.10.133 k8s03 coredns-7f89b7bc75-kv6kg 1/1 Running 0 18m 10.244.235.129 k8s03 coredns-7f89b7bc75-m27bw 1/1 Running 0 18m 10.244.236.129 k8s02 [root@k8s01 ~]# kubectl get nodesNAME STATUS ROLES AGE VERSIONk8s01 Ready control-plane,master 20m v1.20.6k8s02 Ready worker 13m v1.20.6k8s03 Ready worker 11m v1.20.6

7、部署tomcat服务

kubectl describe nodes k8s01 -n kube-systemTaints: node-role.kubernetes.io/master:NoSchedule ##k8s01默认打了污点#把tomcat.tar.gz上传到k8s02、k8s03,手动解压docker load -i tomcat.tar.gzkubectl apply -f tomcat.yaml[root@k8s01 ~]# kubectl get podsNAME READY STATUS RESTARTS AGEdemo-pod 1/1 Running 0 8skubectl apply -f tomcat-service.yaml[root@k8s01 ~]# kubectl get svcNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.96.0.1 443/TCP 30mtomcat NodePort 10.107.242.7 8080:30080/TCP 5s在浏览器访问ip:30080即可请求到浏览器load -i busybox-1-28.tar.gz[root@k8s01 ~]# kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- shIf you don't see a command prompt, try pressing enter./ # nslookup kubernetes.default.svc.cluster.localServer: 10.96.0.10Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.localName: kubernetes.default.svc.cluster.localAddress 1: 10.96.0.1 kubernetes.default.svc.cluster.local/ # nslookup tomcat.default.svc.cluster.localServer: 10.96.0.10Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.localName: tomcat.default.svc.cluster.localAddress 1: 10.107.242.7 tomcat.default.svc.cluster.local/ #10.96.0.10 就是我们coreDNS的clusterIP,说明coreDNS配置好了。解析内部Service的名称,是通过coreDNS去解析的。#注意:busybox要用指定的1.28版本,不能用最新版本,最新版本,nslookup会解析不到dns和ip

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:CenOS MySQL入门及安装
下一篇:29 条实用 Linux 命令(29的裤子腰围是多少)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~