k8s 安装 kubernetes安装教程 虚拟机安装k8s centos7安装k8s kuberadmin安装k8s k8s工具安装 k8s安装前配置参数

k8s采用master, node1, node2 。三台虚拟机安装的一主两从,机器已提前安装好docker。下面是机器配置,k8s安装过程,以及出现的问题与解决方法

  虚拟机全部采用静态ip, master 30机器, node1 31机器, node2 32机器

                                       机器ip 192.168.164.30   # master

                                                   192.168.164.31   # node1

                                                   192.168.164.31   # node2

机器配置:

                 2核2g

 k8s安装步骤

1. 关闭防火墙(三节点都配置):

 systemct] stop firewal1d	# 永久systemct] disable firewal1d 

2.关闭selinux(三台节点都配置):

#永久 选择一个即可,永久删除,毕竟是虚拟机
sed -i 's/enforcing/disabled/'  /etc/selinux/config
setenforce 0 #临时

3.关闭swap(三台节点都配置):

#临时
swapoff -a # 永久
sed -ri  's/.*swap.*/#&/'  /etc/fstab

4.设置hostname(三台节点分别配置)

# master节点, 名字随意也可以叫master,与后面的配置 对应即可
hostnamectl  set-hostname  k8smaster####
#### 注意下面是在其他节点输入命令
##### node1 节点:
hostnamectl set-hostname k8snode1#node2 节点
hostnamectl set-hostname k8snode2

5.master节点 添加hosts配置

cat >> /etc/hosts << EOF
192.168.164.30 k8smaster
192.168.164.31 k8snode1
192.168.164.32 k8snode2
EOF

6.将桥接的IPv4流量传递到iptables的链(三台节点都配置):

cat  >  /etc/sysctl.d/k8s.conf  <<  EOF 
net.bridge.bridge-nf-ca11-ip6tables = 1
net.bridge.bridge-nf-ca11-iptables = 1
EOF
#配置生效
sysctl  --system 

7. 虚拟机同步时间(三台节点都配置):

# yum仓库安装插件
yum install  ntpdate -y#同步
ntpdate time.windows.com

8.yum仓库配置k8s(三台节点都配置):

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=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

 更新yum(三台都输入):

   yum update -y

9. 安装kuberadmin(三台节点都配置) :

yum install -y  kubelet-1.18.0  kubeadm-1.18.0  kubect1-1.18.0
# systemctl 管理 kubelet
systemctl  enable  kubelet

10. 修改网络配置(三台节点都配置):


#在/etc/sysctl.conf中添加参数:    
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1# 报错并退出后,执行sysctl -p 时刷新sysctl -p

11. 修改网络配置参数(三台节点都配置):

#文件内容为0,表示禁止数据包转发,1表示允许
cat /proc/sys/net/ipv4/ip_forward
# vi编辑参数 0修改为1  允许数据包转发

 12. 加载ip_vs模块

for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

 13. 清空iptables 规则(不关闭则报错)

iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

12. master节点配置,启动kubeadm:

# 第一个参数,修改为自己的虚拟机ip,不知道的ifconfig,查看
kubeadm init --apiserver-advertise-address=192.168.164.30 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16

 13. 报错都给找不到报错信息了。查看报错信息修改即可,比如设置:

      /proc/sys/net/bridge中的文件bridge-nf-call-iptables 设置为1 ,再启动上面12的命令

成功如下:

 master 成功信息:

 14. 截图中需要输入的命令,再次配置环境

mkdir -p  $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf  $HOME/.kube/config
sudo chown $(id -u):$(id -g)  $HOME/.kube/config

15.  部署cni网络插件 master节点输入命令:

# cli网络配置   超时之类的就多试几次, 实在不行,就找人下载下来,文件上传到服务器,然后kubectl apply -f 下载地址
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

 16. 成功之后,等待自动安装成功,时间有点长 kubectl get nodes 查看节点是否ready

# 查看是否成功, 成功则全是running
kubectl get pods -n kube-system

      

  查看节点是否ready

 kubectl get nodes 

 16. 安装成功!使用nginx验证:

# 创建nginx
kubectl create deployment nginx --image=nginx# 查看是否running
kubectl get pods

 

成功后,设置暴露端口:

kubectl expose deployment nginx --port=80 --type=NodePort# 查看映射
kubectl get pod,svc

k8s安装成功, 测试成功。k8s使用 kubeadm安装成功!

注:

      如何关闭集群:

                            systemctl stop kubelet

                            使用上述命令,在node1,node2, master节点依次关闭服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/95185.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Terraform学习】使用 Terraform创建DynamoDB添加项目(Terraform-AWS最佳实战学习)

本站以分享各种运维经验和运维所需要的技能为主 《python》&#xff1a;python零基础入门学习 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解…

k8s(kubernetes)介绍篇

一、Kubernetes 是什么 Kubernetes 是一个全新的基于容器技术的分布式架构解决方案&#xff0c;是 Google 开源的一个容器集群管理系统&#xff0c;Kubernetes 简称 K8S。 Kubernetes 是一个一站式的完备的分布式系统开发和支撑平台&#xff0c;更是一个开放平台&#xff0c;对…

Mac“其他文件”存放着什么?“其他文件”的清理方法

很多Mac用户在清理磁盘空间时发现&#xff0c;内存占用比例比较大的除了有iCloud云盘、应用程序、影片、音频、照片等项目之外&#xff0c;还有一个“其他文件”的项目磁盘占用比也非常大&#xff0c;想要清理却无从下手。那么Mac“其他文件”里存放的是什么文件&#xff1f;我…

延迟队列的理解与使用

目录 一、场景引入 二、延迟队列的三种场景 1、死信队列TTL对队列进行延迟 2、创建通用延时消息死信队列 对消息延迟 3、使用rabbitmq的延时队列插件 x-delayed-message使用 父pom文件 pom文件 配置文件 config 生产者 消费者 结果 一、场景引入 我们知道可以通过TT…

什么是跨域问题 ?Spring MVC 如何解决跨域问题 ?Spring Boot 如何解决跨域问题 ?

目录 1. 什么是跨域问题 &#xff1f; 2. Spring MVC 如何解决跨域问题 &#xff1f; 3. Spring Boot 如何解决跨域问题 &#xff1f; 1. 什么是跨域问题 &#xff1f; 跨域问题指的是不同站点之间&#xff0c;使用 ajax 无法相互调用的问题。 跨域问题的 3 种情况&#x…

神经网络--感知机

感知机 单层感知机原理 单层感知机:解决二分类问题&#xff0c;激活函数一般使用sign函数,基于误分类点到超平面的距离总和来构造损失函数,由损失函数推导出模型中损失函数对参数 w w w和 b b b的梯度&#xff0c;利用梯度下降法从而进行参数更新。让1代表A类&#xff0c;0代…

Qt +VTK+Cmake 编译和环境配置(第三篇,高级篇, 已解决)

上篇说了&#xff0c;Cmake 虽然可以成功的build&#xff0c;但是大部分人都选择的是VS编译&#xff0c;没有人选择Qt自带的编译器编译。 在build文件夹 shift右键 进入cmd串口&#xff0c;执行mingw32-make mingw32-make 报错&#xff01;&#xff01;&#xff01;&#x…

Qt +VTK+Cmake 编译和环境配置(第一篇 采坑)

VTK下载地址&#xff1a;https://vtk.org/download/ cmake下载地址&#xff1a;https://cmake.org/download/ 版本对应方面&#xff0c;如果你的项目对版本没有要求&#xff0c;就不用在意。我就是自己随机搭建的&#xff0c;VTK选择最新版本吧&#xff0c;如果后面其他的库不…

燃气管网监测系统,提升城市燃气安全防控能力

燃气是我们日常生活中不可或缺的能源&#xff0c;但其具有易燃易爆特性&#xff0c;燃气安全使用、泄漏监测尤为重要。当前全国燃气安全事故仍呈现多发频发态势&#xff0c;从公共安全的视角来看&#xff0c;燃气已成为城市安全的重大隐忧&#xff01;因此&#xff0c;建立一个…

Docker(三) 创建Docker镜像

一、在Docker中拉取最基本的Ubuntu系统镜像 搜索Ubuntu镜像 Explore Dockers Container Image Repository | Docker Hub 下载镜像 docker pull ubuntu:22.04 二、在镜像中添加自己的内容 使用ubuntu镜像创建容器 docker run -it ubuntu:20.04 /bin/bash 在容器中创建了一个文…

RISC-V(2)——特权级及特权指令集

目录 1. 特权级 2. 控制和状态寄存器&#xff08;CSR&#xff09; 2.1 分类 2.2 分析 1. 特权级 一个 RISC-V 硬件线程&#xff08;hart&#xff09;是运行在某个特权级上的&#xff0c;这个特权级被编码到一个或者多个 CSR&#xff08;control and status register&a…

不同写法的性能差异

“ 达到相同目的,可以有多种写法,每种写法有性能、可读性方面的区别,本文旨在探讨不同写法之间的性能差异 len(str) vs str "" 本部分参考自: [问个 Go 问题&#xff0c;字符串 len 0 和 字符串 "" &#xff0c;有啥区别&#xff1f;](https://segmentf…