一、安装前准备
我准备了三台CentOS7.6 mini虚拟机
192.168.3.170 master 2核4G
192.168.3.171 node1 2核4G
192.168.3.172 node2 2核4G
之前都已安装好了docker 19.03.13

二、关闭selinux

setenforce 0  # 临时关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 永久关闭

三、调整好时间
安装ntpdate程序yum install ntpdate ntp -y
vi /etc/ntp.conf

# 注释以下内容:
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
# 添加以下内容:
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
server ntp4.aliyun.com iburst
server ntp5.aliyun.com iburst
server ntp6.aliyun.com iburst
server ntp7.aliyun.com iburst

保存并退出
重启服务systemctl start ntpd.service
设为开机启动systemctl enable ntpd.service
设置时区timedatectl set-timezone Asia/Shanghai
将时间写入硬件时钟timedatectl set-local-rtc 0
重启依赖系统时间的服务
systemctl restart rsyslog
systemctl restart crond

四、安装iptables
yum install -y iptables iptables-services
systemctl start iptables && systemctl enable iptables

五、安装ipvs
执行yum install -y conntrack ipvsadm ipset sysstat libseccomp
执行modprobe br_netfilter
执行

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

执行

chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.moduleslsmod | grep -e ip_vs -e nf_conntrack_ipv4

六、将桥接的IPv4流量传递到iptables

cat > /etc/sysctl.d/kubernetes.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

手动加载所有的配置文件,执行sysctl --system

--system的说明从所有下列配置文件中加载系统设置/run/sysctl.d/*.conf/etc/sysctl.d/*.conf/usr/local/lib/sysctl.d/*.conf/usr/lib/sysctl.d/*.conf/lib/sysctl.d/*.conf/etc/sysctl.conf

七、设置主机名和IP配置
在170的主机执行hostnamectl set-hostname k8s-master
在171的主机执行hostnamectl set-hostname k8s-node01
在172的主机执行hostnamectl set-hostname k8s-node02
在三台机器上执行添加hosts配置
执行vi /etc/hosts并输入以下配置

192.168.3.170 k8s-master
192.168.3.171 k8s-node01
192.168.3.172 k8s-node02

执行service network restart

八、添加阿里云YUM源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

九、其它
sysctl -w net.ipv4.ip_forward=1

十、关闭swap
vi /etc/fstab注释掉swap这一行
或用sed -ri 's/.*swap.*/#&/' /etc/fstab永久关闭,保存并退出
需要重启系统reboot

十一、开放相关端口
etcd 2379 2380
master 6443 8472
node 8472
lb 8443

2379用于客户端监听
2380用于节点间内部通信
6443是kube-apiserver组件使用
8443是虚拟IP监听的服务端口
开放端口firewall-cmd --zone=public --add-port=2379/tcp --add-port=2380/tcp --permanent
开放端口firewall-cmd --zone=public --add-port=6443/tcp --add-port=8472/tcp --permanent
开放端口firewall-cmd --zone=public --add-port=8443/tcp --add-port=10250/tcp --permanent
重启防火墙firewall-cmd --reload

十二、为防止出现如下警告
detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “systemd”.
在配置文件里设置使用systemd驱动

cat > /etc/docker/daemon.json <<EOF
{"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2","storage-opts": ["overlay2.override_kernel_check=true"]
}
EOF

重启docker服务systemctl restart docker

十三、3台机器都安装kubeadm、kubelet和kubectl
yum install -y kubectl-1.20.7 kubeadm-1.20.7 kubelet-1.20.7 --nogpgcheck

systemctl enable kubelet

十四、初始化master(在170这台机器执行)

kubeadm init --apiserver-advertise-address=192.168.3.170 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.20.7 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

成功后会看到下图,红色框的之后会用到,选复制到一个记事本

先安装yum install tree -y
再查看生成的配置文件tree /etc/kubernetes/

使用kubectl工具
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
执行kubectl get nodes可查看到节点

安装Pod网络插件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml

kube-proxy开启 ipvs
kubectl edit cm kube-proxy -n kube-system修改其中的:mode: “ipvs”

批量删除并自动重建kube-proxy
kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
查看生成的ipvs规则ipvsadm -Ln

十五、部署 Node节点
在k8s-node01、k8s-node02上执行

kubeadm join 192.168.3.170:6443 --token i1ikai.iit7zveg7nqkzw2t \
--discovery-token-ca-cert-hash sha256:2befd454c6b9c19965ear01176363f213b03675fdsf3abbda1a993e27d6c65123

过一会之后,在170这个master机子上执行kubectl get nodes可查看到所有节点

执行kubectl get cs命令来检测组件的运行状态时,报如下错误:
Get “http://127.0.0.1:10251/healthz”: dial tcp 127.0.0.1:10251: connect: connection refused

编辑/etc/kubernetes/manifests/下的kube-controller-manager.yaml和kube-scheduler.yaml 注释掉对应的port即可
然后在master节点上重启systemctl restart kubelet.service,再查看就都OK了。

十六、部署.net5程序到K8S上
新建一个.net5 的WebMvc程序,新建时勾选docker, 工程取名为WebMvc1
将整个WebMvc1目录通过WinSCP 工具上传到虚拟机中170这台机器的/root目录里。
在终端输入cd /root/WebMvc1进入目录
执行docker build -f /root/WebMvc1/WebMvc1/Dockerfile -t test/webmvc:1.0 .制作镜像,会要几分钟的时间。
完成后,执行docker images可看镜像了,如下图

我没有放到阿里云或其它仓库,所以就通过docker save从170机器导出,然后通过winscp工具下载到win10中,再通过winscp上传到171和172机器,通过docker load加载镜像。具体可参考我这篇https://blog.csdn.net/junshangshui/article/details/107468331

为了怕出现防火墙相关问题,我直接临时关闭防火墙systemctl stop firewalld

在170机器创建一个镜像为test/webmvc:1.0的部署
kubectl create deployment myweb --image=test/webmvc:1.0
创建service,并通过Service的80端口转发至容器的端口
kubectl expose deployment myweb --port=80 --type=NodePort
查看IP和对外暴露的端口kubectl get svc | grep myweb
执行kubectl get pods -o wide可看到运行在node01即171机器上。
结果为下图

在171的终端输入docker ps可看到有个名称k8s_webmvc_myweb-85…的容器
在170、171和172的终端执行curl "http://10.1.101.202:80或者curl "http://192.168.3.170:32706"都可收到结果
最后在我的win10浏览器输入http://192.168.3.170:32706也可防问到,如下图

相关删除命令
kubectl delete services myweb
kubectl delete deployment myweb

十七、安装部署K8S的Dashboard
先下载配置文件

wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml -O ./kubernetes-dashboard.yaml

编辑配置文件vi ./kubernetes-dashboard.yaml只修改下面注释中提到的两处

kind: Service
apiVersion: v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
spec:type: NodePort type: NodePort #修改Service为NodePort类型ports:- port: 443targetPort: 8443nodePort: 31234  #指定NodePort端口selector:k8s-app: kubernetes-dashboard

保存并退出
应用kubectl apply -f ./kubernetes-dashboard.yaml
查看信息kubectl get pods,svc -n kubernetes-dashboard

创建service account并绑定默认cluster-admin管理员集群角色
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard

kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin

kubectl describe secrets -n kubernetes-dashboard $(kubectl -n kubernetes-dashboard get secret | awk '/dashboard-admin/{print $1}')
复制token到记事本中
在win10机器的浏览器访问https://192.168.3.170:31234,忽略证书报错并继续访问,然后选择token,粘贴刚才的token并登录即可看到了,如下图

CentOS7安装k8s集群相关推荐

  1. 手把手教你在centos7安装k8s集群

    最近在整理回顾k8s相关的知识,实操手动去搭建一个简易的k8s集群环境(作者本人搭建的是k8s集群version v1.23.3),花了挺多时间,踩了不少坑.不过最终还是把环境跑起来了,大家按照我的方 ...

  2. (亲测无坑)Centos7.x使用kubeadm安装K8s集群1.15.0版本

    基础环境配置 三台Centos7.x的服务器,主节点 cpu >=2,node节点>=1 注:(上述cpu为最低配置,否则集群安装部署会报错,无法启动,对其他硬件无硬性要求) 以下操作若无 ...

  3. yum安装k8s集群(单master两个node、阿里云镜像源)

    yum安装k8s集群(单master节点方式) 一.环境准备 1.系统要求 按量付费阿里云主机三台 要求:centos7.6~7.8:以下为 https://kuboard.cn/install/in ...

  4. 【运维开发】Mac OS(10.13.6)使用 vagrant+VirtualBox +centos7搭建k8s集群

    Mac OS(10.13.6)使用 vagrant+VirtualBox +centos7搭建k8s集群步骤 环境准备工作 下载VirtualBox 地址:https://www.virtualbox ...

  5. 从零开始离线安装k8s集群

    本文主要用于在内网(离线)环境安装k8s集群:linux环境 centos7.6 主要步骤有: 安装docker 创建dokcer 私有镜像库 registry 安装kubernetes 安装flan ...

  6. 使用sealos安装K8S集群时,需确保节点的swap是关闭的

    使用sealos安装K8S集群时,需确保节点的swap是关闭的,否则会安装失败

  7. 使用KubeKey安装K8S集群

    KubeKey [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9a5Ji2nE-1625797190511)(https://github.com/kubesphere ...

  8. [提示]普通用户使用sealos安装k8s集群的话,默认还是会装到root用户的home目录/root

    如果使用普通用户,使用sealos安装k8s集群的话,默认还是会装到root用户的home目录/root kubeadm init --config=/root/kubeadm-config.yaml ...

  9. Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务

     前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for desktop中启用 ...

最新文章

  1. mysql 创建和删除库_Mysql创建和删除数据库
  2. 转:百万级访问量网站的技术准备工作
  3. 自动化控制之线程池的使用
  4. pythons_pythons是什么
  5. SPIDR - 完美分割用户故事的五种简单技巧
  6. leetcode968. 监控二叉树
  7. xpath中两个冒号_爬虫学习(5)—XPath
  8. 从备用类型总盗用steal page
  9. 时差怎么理解_英国与中国的时差为什么隔8小时(英国与中国的时差解读)
  10. 【问题】SQL远程过程调用失败
  11. 《攻城Online》快速原型:服务端设计
  12. 阿里云无影云桌面服务关联角色设置及删除方法
  13. 问题1053:素数回文
  14. 克鲁斯卡尔算法(Kruskal Algorithm)——图的最小生成树
  15. 主成分回归之后预测_回归分析|笔记整理(B)——主成分回归(下),偏最小二乘回归...
  16. CPU缓存L1,L2和L3是什么?如何工作?
  17. 北京丰台线下处理交通违章的地方在哪里
  18. 雅虎高管解读财报 将在今年完成阿里资产剥离
  19. python安装途中遇到的问题和解决方法
  20. 千军万马网盘下载器1.0

热门文章

  1. 云计算设计模式(十二)——索引表模式
  2. oracle exfsys 下 rlm$evtcleanup,ORA-27468 EXFSYS.RLM$EVTCLEANUP任务引起的故障
  3. 交换机的背板带宽计算方式
  4. html边框复合属性,详解CSS的border边框属性及其在CSS3中的新特性
  5. Web应用界面设计规范—给项目组培训 .
  6. 基于网络电话话营销数据的数据分析+机器学习预测
  7. wish圈:wish商户平台高清视频教程全套下载【共67集】+持续更新
  8. QT自定义安装包制作原理
  9. 输入三角形的三条边,先判断是否可以构成三角形,如果可以,则进一步求三角形的周长和面积,否则报错“无法构成三角形!”
  10. 猎人营告诉你在锻炼之前需要先热身