01-安装

2023-09-18 10:44:42

1、安装前准备

1.1、集群IP分布

主机名IP地址角色备注
kube-master192.168.168.60kube-master管理节点
kube-node1192.168.168.61kube-node计算节点
kube-node2192.168.168.62kube-node计算节点
kube-node3192.168.168.63kube-node计算节点
repo192.168.168.72registryyum安装源,私有仓库

1.2、修改主机名与本地hosts解析,dns(dns略)

[root@h60 ~]# echo kube-master > /etc/hostname 
[root@h61 ~]# echo kube-node1 > /etc/hostname 
[root@h62 ~]# echo kube-node2 > /etc/hostname 
[root@h63 ~]# echo kube-node3 > /etc/hostname 

[root@kube-node3 ~]# cat /etc/hosts
192.168.168.60 kube-master
192.168.168.61 kube-node1
192.168.168.62 kube-node2
192.168.168.63 kube-node3

1.3、从节点安装docker

> # 在node1~3上操作
[root@kube-node3 ~]# yum -y install docker #安装 docker
[root@kube-node3 ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf #开启路由转发
[root@kube-node3 ~]# sysctl -p #让配置立刻生效
[root@kube-node3 ~]# systemctl start docker
[root@kube-node3 ~]# systemctl enable docker
[root@kube-node3 ~]# systemctl stop/disable firewalld
[root@kube-node3 ~]# setenforce 0 

1.4、配置私有仓库harbor

2、配置本地镜像源

2.1、配置本地k8s镜像源

[root@soft72 localrepo]# pwd
/var/www/html/localrepo

[root@soft72 localrepo]# ls
containernetworking-cni-0.6.0-3.el7.x86_64.rpm  kubernetes-kubeadm-1.10.3-0.el7.x86_64.rpm
etcd-3.3.11-2.el7.centos.x86_64.rpm             kubernetes-master-1.10.3-0.el7.x86_64.rpm
flannel-0.7.1-4.el7.x86_64.rpm                  kubernetes-node-1.10.3-0.el7.x86_64.rpm
kubernetes-1.10.3-0.el7.x86_64.rpm              repodata
kubernetes-client-1.10.3-0.el7.x86_64.rpm
]# cat /etc/yum.repos.d/local-k8s.repo 
[my-k8s-repo]
name=my-k8s-repo
baseurl=http://harbor.soft72.com/localrepo
enabled=1
gpgcheck=0

2.2、master与node镜像源如下

[root@kube-master ~]# cat /etc/yum.repos.d/local-k8s.repo 
[my-k8s-repo]
name=my-k8s-repo
baseurl=http://harbor.soft72.com/localrepo
enabled=1
gpgcheck=0

3、安装部署kube-master

3.1、etcd安装配置(master)

  • 安装
[root@kube-master ~]# yum -y install etcd   #安装 etcd(键值型数据库)
  • 改配置
[root@kube-master ~]# vim /etc/etcd/etcd.conf 
6 ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" #修改监听的客户端地址,0.0.0.0 指监听所有的主机
[root@kube-master ~]# systemctl start etcd.service
[root@kube-master ~]# systemctl enable etcd.service 
  • 创建配置网络
在 etcd 中,创建网络,mk 创建键值对 ——> 创建网络(后面课程配置)
[root@kube-master ~]# etcdctl mk /atomic.io/network/config '{"Network":"10.254.0.0/16","Backend":{"Type":"vxlan"}}'
[root@kube-master ~]# etcdctl ls / #查看
[root@kube-master ~]# etcdctl ls /atomic.io
[root@kube-master ~]# etcdctl ls /atomic.io/network
[root@kube-master ~]# etcdctl get /atomic.io/network/config #验证,查看 etcd 中的键值
对,确认网络配置

3.2 flannel安装配置(master+node)

  • 安装
[root@kube-node1 ~]# yum -y install flannel
[root@kube-node1 ~]# vim /etc/sysconfig/flanneld
4 FLANNEL_ETCD_ENDPOINTS="http://192.168.168.60:2379" #指定etcd
>#  etcd 中已定义了 flannel 网络地址:10.254.0.0/16
  • 起服务
启动服务(flannel 服务必须在 docker 服务之前启动)
[root@kube-node1 ~]# systemctl stop docker
[root@kube-node1 ~]# systemctl enable flanneld
[root@kube-node1 ~]# systemctl start flanneld docker
  • 查看
[root@kube-node1 ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 10.254.73.1  netmask 255.255.255.0  broadcast 0.0.0.0
        ...
flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 10.254.73.0  netmask 255.255.255.255  broadcast 0.0.0.0
  • 测试(node)
node上新开一个容器,各个节点相互ping,测试flannel网络
[root@kube-node1 ~]# docker run -d harbor.soft72.com:8080/public/nginx:latest
[root@kube-node1 ~]# docker inspect -f "{{.NetworkSettings.IPAddress}}" #查看IP

3.3、安装k8s-master

  • 安装
[root@kube-master ~]# yum list kubernetes-* #检查 k8s 的安装软件包,必须是 1.10.3
[root@kube-master ~]# yum -y install kubernetes-master kubernetes-client
[root@kube-master ~]# ls /etc/kubernetes/
apiserver  config  controller-manager  scheduler
  • 修改 k8s 全局配置文件
[root@kube-master ~]# vim /etc/kubernetes/config
22 KUBE_MASTER="--master=http://192.168.168.60:8080" #指定k8s管理节点的IP地址
(指定 apiserver 的地址)
  • 修改 apiserver 配置文件(master 主配置文件)
[root@kube-master ~]# vim /etc/kubernetes/apiserver
8 KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" #监听所有地址
17 KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.168.60:2379"    #指定etcd地址
20 KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" #k8s集群默认IP端
23 KUBE_ADMISSION_CONTROL="--admission-control=Namespace
Lifecycle,LimitRanger,SecurityContextDeny,ResourceQuota" 
> #定义 k8s 的交互和配置行为,删除 ServiceAccount(通讯的一种机制,使用秘钥认证,需要证书认证),在这里是内网通讯
> #不涉及安全性问题,所以本次 k8s 不采用证书认证,使用明文即可
  • controller-manager scheduler 使用默认即可
  • 启动
启动服务,设置三个服务的开机自启动
[root@kube-master ~]# systemctl enable kube-apiserver.service kube-controller-manager.service kube-scheduler.service
[root@kube-master ~]# systemctl start kube-apiserver.service kube-controller-manager.service kube-scheduler.service
[root@kube-master ~]# systemctl status kube-apiserver.service kube-controller-manager.service kube-scheduler.service
  • 验证服务
[root@kube-master ~]# kubectl get cs
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
etcd-0               Healthy   {"health":"true"}   
scheduler            Healthy   ok     

4、安装部署kube-node

4.1、安装 kube-node

  • 安装
[root@kube-node1 ~]# yum -y install kubernetes-node
  • 修改 k8s 全局配置文件
[root@kube-node1 ~]# vim /etc/kubernetes/config
22 KUBE_MASTER="--master=http://192.168.168.60:8080" #指定 k8s 管理节点的 IP 地址
  • 修改kubelet配置文件
[root@kube-node1 ~]# vim /etc/kubernetes/kubelet
>#  #修改 kubelet 监听地址,监听所有的 IP 地址,
> 5 KUBELET_ADDRESS="--address=0.0.0.0"
># master 在创建容器的时候需要和 kubelet 通讯,需要 IP
># 指定本机的主机名,master发现有节点来连接,需要知道节点的名称,才能进行通讯
> 11 KUBELET_HOSTNAME="--hostname-override=kube-node1" #与本机主机名一致
14 KUBELET_ARGS="--cgroup-driver=systemd --fail-swap-on=false 
--kubeconfig=/etc/kubernetes/kubelet.kubeconfig
--pod-infra-container-image=harbor.soft72.com:8080/public/pod-infrastructure:latest"  #harbor中镜像地址
> #kubelet 扩展参数,自定义 kubelet 的子配置文件 kubelet.kubeconfig(使用客户端与服务器进行通讯的
># 时候服务器的地址和配置文件),kubelet 是用于监视 pod 的,这里指定被监听的 pod 镜像,kubelet.kubeconfig 是 kubelet 的配置文件的一部分,使用命令生成 kubelet.kubeconfig 文件内容
># 设置集群:/etc/kubernetes/kubelet.kubeconfig (默认没有)
># 编写 kubelet.kubeconfig 文件,将生成的信息,写入到 kubelet.kubeconfig 文件中
  • 新建kubelet.kubeconfig文件
># 使用命令方式创建
kubectl config set-cluster local --server="http://192.168.168.60:8080"
kubectl config set-context --cluster="local" local
kubectl config set current-context local
kubectl config view
cat kubelet.kubeconfig 
vim kubelet.kubeconfig 
># #kubelet.kubeconfig 文件,之前并不存在
[root@kube-node1 ~]# vim /etc/kubernetes/kubelet.kubeconfig
apiVersion: v1
clusters:
- cluster:
    server: http://192.168.168.60:8080
  name: local
contexts:
- context:
    cluster: local
    user: ""
  name: local
current-context: local
kind: Config
preferences: {}
users: []
  • 上传 pod-infrastructure到harbor
  • 起服务
[root@kube-node1 ~]# systemctl enable kubelet.service kube-proxy.service 
[root@kube-node1 ~]# systemctl start kubelet.service kube-proxy.service
  • 主控节点验证
[root@kube-master ~]# kubectl get node
NAME         STATUS    ROLES     AGE       VERSION
kube-node1   Ready     <none>    2d        v1.10.3
kube-node2   Ready     <none>    2d        v1.10.3
kube-node3   Ready     <none>    2d        v1.10.3

5、安装kube-dashboard

5.1、部署

  • 上传dashboard镜像到harbor仓库(略)
  • 编辑dashboard配置文件
> [root@kube-master ~]# vim kube-dashboard.yaml 
> 18     spec:
> 19       containers:
> 20       - name: kubernetes-dashboard
> 21         image: harbor.soft72.com:8080/public/kubernetes-dashboard-amd64:v1.8.3 #dashboard私有仓库地址
> 22         ports:
> 23         - containerPort: 9090
> 24           protocol: TCP
> 25         args:
> 26           - --apiserver-host=http://192.168.168.60:8080 #修改为Master的IP
  • 创建dashboard容器
[root@kube-master ~]# kubectl create -f kube-dashboard.yaml
deployment.apps "kubernetes-dashboard" created
service "kubernetes-dashboard" created
  • 验证
> [root@kube-node2 ~]# docker ps #pod随机分配到了node2节点上
> 验证
> http://192.168.168.62:30090
更多推荐

计算机毕业设计nodejs+vue医院固定资产管理系统

采用B/S结构,使得系统更加容易维护。系统的设计与实现主要实现角色有管理员和用户,管理员在后台管理资产申领模块、资产申购模块、资产入库模块、资产出库模块、用户表模块、、科室模块、固定资产模块、配置文件模块。优化代码结构。后台采用nodejs语言开发,前台页面和后台管理页面使用vue,HTML,CSS等技术开发,使用My

视频转漫画怎么转?分享三个简单便捷的操作

在现代社会,人们对于视频和漫画的需求越来越多,而将视频转换为漫画则是一种新的趋势。本文将分享三个简单便捷的操作方式和注意事项,以帮助读者更好地进行视频转漫画的操作。操作方式一:使用手机转换工具对于经常使用手机来比编辑图片或视频的小伙伴我们可以使用书单视频助手来把视频转成漫画效果,我们打开这款工具后,然后在热门工具板块中

Vue 2 进入、离开和列表过渡

前言Vue提供了多种方式来实现过渡效果。在CSS过渡和动画中自动应用class配合CSS动画库在过渡钩子函数中使用JavaScript操作DOM配合JavaScript动画库单元素/组件的过渡将元素或组件放在<transition>中可以在下列情形中触发过渡效果:使用了v-if使用了v-show使用了动态组件组件根节点

JVM:常见的垃圾回收算法

常见的垃圾回收算法分代收集理论当前商业虚拟机的垃圾收集器,大多数都遵循了“分代收集”(GenerationalCollection)[1]的理论进行设计,分代收集名为理论,实质是一套符合大多数程序运行实际情况的经验法则。1)经验法则1:绝大多数对象都是朝生夕灭的。2)经验法则2:熬过越多次垃圾收集过程的对象就越难以消亡

BD就业复习第二天

Hbase1.架构HBase(HadoopDatabase)是一个开源的分布式、面向列族(ColumnFamily)的NoSQL数据库,它是构建在Hadoop之上的。HBase的架构设计旨在处理大规模的数据,特别适用于需要快速读写和随机访问大量数据的应用场景,如日志处理、在线实时分析等。下面是HBase的详细架构解析:

POI的读取EXCEL的【总结】

POI的读取EXcel的总结最近的自己在做了一些关于EXcel的导入工作,正好总结一下我用到一些知识点我首先说用到的方法POI读取指定行列的方法语法:sheet.getRow(x):获取第x行sheet.getRow(x).getCell(y):获取第x行第y列eg:sheet.getRow(5).getCell(2)

Redis的缓存雪崩、缓存穿透、缓存击穿

1.redis的优点高性能:redis是基于内存的数据库,数据存储在RAM中,读写速度很快数据持久化:能够将内存中的数据保存咋磁盘上,防止数据丢失;两种持久化方式:快照和日志追加形式简单丰富:支持丰富的数据类型和易于使用的API2.redis的缺点内存限制:redis存储在内存中,因此受可用内存大小的限制单线程模型:r

Vue中的深度监听(Deep Watch):详细解析与实际示例

Vue中的深度监听(DeepWatch):详细解析与实际示例Vue.js是一款流行的前端JavaScript框架,其响应式系统是其核心特性之一。通过响应式系统,Vue允许开发者轻松地监听数据的变化并对其做出响应。在某些情况下,你可能需要对嵌套的数据结构进行深度监听,以便在任何级别的数据变化时触发相应的操作。本文将深入探

HTML5 Canvas动画实例

在开发在线游戏时,绘制动画是非常重要的。本文介绍一个使用CanvasAPI实现的动画实例——游戏人物的跑步动画。01、动画的概念及原理1、动画动画是通过一幅幅静止的、内容不同的画面(即帧)快速播放来呈现的,使人们在视觉上产生动的感觉。这是利用了人类眼睛的视觉暂留原理。利用人的这种生理特性可制作出具有高度想象力和表现力的

Matlab论文插图绘制模板第115期—带Latex公式的图

之前的文章中,分享了Matlab带线标记的图:带阴影标记的图:带箭头标记的图:带图形标记的图:进一步,分享一下带Latex公式的图,先来看一下成品效果:特别提示:本期内容『数据+代码』已上传资源群中,加群的朋友请自行下载。有需要的朋友可以关注同名公号【阿昆的科研日常】,后台回复关键词【绘图桶】查看加入方式。模板中最关键

代码随想录算法训练营第三十七天|738.单调递增的数字 968.监控二叉树 总结

738.单调递增的数字代码随想录例如:98,一旦出现strNum[i-1]>strNum[i]的情况(非单调递增),首先想让strNum[i-1]--,然后strNum[i]给为9,这样这个整数就是89,即小于98的最大的单调递增整数。从前向后遍历的话,遇到strNum[i-1]>strNum[i]的情况,让strNu

热文推荐