k8s集群安装

目录

部署步骤概览

1、基础环境部署

2、docker环境部署

3、配置k8s集群

4、集群初始化

5、安装dashboard软件


写在前面:本文安装单点master多node的k8s集群,主要用于k8s学习或k8s环境测试;部署的是1.23版本,在1.24版本起,K8S底层使用的是containerd容器;之后还会不定期更新k8s的相关内容!

部署步骤概览

1、基础环境部署

1、安装两台新的centos7虚拟机(我这里演示一台做master,一台做node,还可以多家几台node,对node的操作不多哦!)

2、配置静态IP地址

3、刷新网络服务

4、设置主机名,区分虚拟机

(以上是一些简单的环境部署,以前的文章有提过,这里就不多赘述啦)

下面的操作是matser和node同步,所以可以在shell里面这样设置,就可以同时操作:

5、配置hosts文件,通过主机名互相访问:

6、关闭selinux和防火墙

[root@k8s-master ~]# vim /etc/selinux/config
将selinux=enforcing改成selinux=disabled

[root@k8s-master ~]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@k8s-master ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

7、关闭交换分区

原因:交换分区是当内存不够时,会使用swap分区,但是swap分区的性能不高,所以k8s默认不允许使用;

临时关闭:[root@k8s-master ~]# swapoff -a
永久关闭:[root@k8s-master ~]# vim /etc/fstab注释最后一行

8、调整内核参数,输入以下命令:

overlay用于支持overlay文件系统,提供容器所需的文件系统隔离;

br_netfilter用于Linux桥接网络和IP数据包过滤,实现K8S的网络通信;

确保相关数据包被正确的转发,确保容器之间的流量能够正确的被主机转发;

9、更新和配置软件源:

添加阿里云yum源:[root@k8s-master ~]# wget -O /etc/yum.repos.d/Centos-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
生成yum元数据缓存:[root@k8s-master ~]# yum clean all && yum makecache
配置阿里云docker yum仓库源:[root@k8s-master ~]# yum install -y yum-utils
[root@k8s-master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

10、配置ipvs功能(实现负载均衡):

[root@k8s-master ~]# yum install -y ipset ipvsadm

加载对应模块:

11、配置时间同步:

[root@k8s-master ~]# systemctl start chronyd && systemctl enable chronyd
[root@k8s-master ~]# timedatectl set-timezone Asia/Shanghai
查看时间相关设置:[root@k8s-master ~]# timedatectl

基础环境部署就完成了!

2、docker环境部署

1、下载并启动docker:

[root@k8s-master ~]# yum install -y docker-ce-20.10.24-3.el7 docker-ce-cli-20.10.24-3.el7 containerd.io
启动docker:[root@k8s-master ~]# systemctl start docker
设置开机启动:[root@k8s-master ~]# systemctl enable docker
验证:[root@k8s-master ~]# systemctl status docker

2、配置docker,然后重启docker:

3、重启虚拟机,验证是否装好:

[root@k8s-node1 docker]# reboot
[root@k8s-node1 ~]# docker ps
#这里使用docker ps看docker是否启动成功

docker的环境就准备好了!

3、配置k8s集群

1、配置K8S组件源:

构建本地yum缓存:[root@k8s-master ~]# yum makecache

2、安装K8S:

[root@k8s-master ~]# yum install -y kubeadm-1.23.17-0 kubelet-1.23.17-0 kubectl-1.23.17.0
[root@k8s-master ~]# cat <<EOF > /etc/sysconfig/kubelet 
> KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
> KUBE_PROXY_MODE="ipvs"
> EOF
[root@k8s-master ~]# systemctl enable --now kubelet

第三步也完成了!

4、集群初始化

最开始不是所有会话一起操作的吗?现在开始主要是在master的操作:

1、mster集群初始化(只在maste上做):

[root@k8s-master ~]# kubeadm init \
> --kubernetes-version=v1.23.17 \
> --pod-network-cidr=10.224.0.0/16 \
> --service-cidr=10.96.0.0/12 --apiserver-advertise-address=192.168.10.150 \
> --image-repository=registry.aliyuncs.com/google_containers
#上面图片里copy下来一条条运行的!!!
[root@k8s-master ~]# mkdir -p $HOME/.kube
[root@k8s-master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

2、将node加入master集群:

上面复制的那个,复制到node节点上,有几个节点就复制到所有node上;我这里只开了一台做node,所以只加了一个进去。

在master上查看node:

在master上给node打标签:[root@k8s-master ~]# kubectl label node k8s-node1 node-role.kubernetes.io/worker=worker

3、安装Calico网络插件:

[root@k8s-master ~]# wget https://docs.projectcalico.org/archive/v3.25/manifests/calico.yaml
[root@k8s-master ~]# kubectl apply -f calico.yaml
等待status都变成ready:[root@k8s-master ~]# kubectl get node

4、K8S配置ipvs:

[root@k8s-master ~]# kubectl edit configmap kube-proxy -n kube-system

按a修改:

删掉所有kube-proxy使之重启:
[root@k8s-master ~]# kubectl delete pods -n kube-system -l k8s-app=kube-proxy

5、验证集群搭建成功:

验证,出现如下效果即可:

第四步也结束了!现在集群已经搭建好了,下面的操作可做可不做,给大家介绍一个dashboard的软件,有可视化的效果。

5、安装dashboard软件

安装软件Dahboard(只在master上执行)

[root@k8s-master ~]# wget https://mirror.ghproxy.com/https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
[root@k8s-master ~]# vim recommended.yaml
启动:[root@k8s-master ~]# kubectl apply -f recommended.yaml
查看:[root@k8s-master ~]# kubectl get pods,svc -n kubernetes-dashboard

要等到运行出来了在做下一步!!!

[root@k8s-master ~]# vim dashboard-access-token.yaml

在文件里编辑以下内容:

[root@k8s-master ~]# cat dashboard-access-token.yaml 
#Creating a Service Account  
apiVersion: v1  
kind: ServiceAccount  
metadata:  
  name: admin-user  
  namespace: kubernetes-dashboard  
---  
# Creating a ClusterRoleBinding  
apiVersion: rbac.authorization.k8s.io/v1  
kind: ClusterRoleBinding  
metadata:  
  name: admin-user  
roleRef:  
  apiGroup: rbac.authorization.k8s.io  
  kind: ClusterRole  
  name: cluster-admin  
subjects:  
- kind: ServiceAccount    
  name: admin-user  
  namespace: kubernetes-dashboard  
---  
# Getting a long-lived Bearer Token for ServiceAccount  
apiVersion: v1  
kind: Secret  
metadata:  
  name: admin-user
  namespace: kubernetes-dashboard  
  annotations:  
    kubernetes.io/service-account.name: "admin-user"  
type: kubernetes.io/service-account-token

[root@k8s-master ~]# kubectl apply -f dashboard-access-token.yaml
访问dashboard:[root@k8s-master ~]# kubectl get svc -n kubernetes-dashboard

去windows里访问网址:

获取tocken登录:[root@k8s-master ~]# kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"}|base64 -d

运行效果:

此次分享到这里就结束了,如果有问题欢迎后台留言或评论区留言!

相关推荐
川石课堂软件测试1 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
昌sit!7 小时前
K8S node节点没有相应的pod镜像运行故障处理办法
云原生·容器·kubernetes
追风林8 小时前
mac 本地docker-mysql主从复制部署
mysql·macos·docker
A ?Charis10 小时前
Gitlab-runner running on Kubernetes - hostAliases
容器·kubernetes·gitlab
城南vision10 小时前
Docker学习—Docker核心概念总结
java·学习·docker
wclass-zhengge10 小时前
Docker篇(Docker Compose)
运维·docker·容器
北漂IT民工_程序员_ZG11 小时前
k8s集群安装(minikube)
云原生·容器·kubernetes
梦魇梦狸º14 小时前
腾讯轻量云服务器docker拉取不到镜像的问题:拉取超时
docker·容器·github
鬼才血脉14 小时前
docker+mysql配置
mysql·adb·docker
詹姆斯爱研究Java14 小时前
Docker 的基本概念和优势
docker