k8s搭建

硬件要求

测试环境

# master
2核 4G 20G
# node
4核 8G 40G

生产环境

# master
8核 16G 100G
# node
16核 64G 500G

方式一:基于kubeadm方式搭建

具体指令部署

1.创建一个Master节点kubeadm init
2.将Node节点加入到当前集群中$kebeadm join <Master 节点的IP和端口>

安装要求

# 节点         主机ip                操作系统       内存硬盘
master 192.168.250.136 centos7 2核/4G/20G
node1 192.168.250.137 centos7 2核/4G/40G
node2 192.168.250.138 centos7 2核/4G/40G

修改master和node服务器相关配置信息

# master和node节点
# 1.关闭防火墙
>>> systemctl stop firewalld.service
>>> systemctl disable firewalld.service
# 2.关闭selinux防火墙
>>> setenforce 0
>>> sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
>>> setenforce 0
>>> getenforce
# 3.关闭swap分区
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
# 4.master和node节点之间设置无密访问
>>> cat >> /etc/hosts << EOF
192.168.250.136 master
192.168.250.137 node1
192.168.250.138 node2
EOF
>>> scp -rp /etc/hosts root@192.168.250.137:/etc/hosts
>>> scp -rp /etc/hosts root@192.168.250.138:/etc/hosts
>>> ssh-keygen -t rsa
>>> ssh-copy-id -i root@192.168.1.137
>>> ssh-copy-id -i root@192.168.1.138
# 5.将桥接的IPV4流量传递到iptables的链
>>> cat >/etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
>>> sysctl --system # 生效

所有节点安装Docker/kubeadm/kubelet

# 1.安装docker
>>> wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
>>> yum install -y docker-ce-18.06.1.ce
>>> systemctl enable docker && systemctl start docker
# 2.修改一下docker仓库源
>>> cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
# 3.重启docker
>>> systemctl restart docker

添加阿里云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

安装kubeadm,kubelet和kubectl

>>> yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
>>> systemctl enable kubelet

部署Kubernetes Master

# 在192.168.250.136(Master)执行`
# apiserver-advertise-address修改为自己的master节点ip
>>> kubeadm init \
--apiserver-advertise-address=192.168.250.136 \
--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 # --apiserver-advertise-address 指明用 Master 的哪个 interface 与 Cluster 的其他节点通信。如果 Master 有多个 interface,建议明确指定,如果不指定,kubeadm 会自动选择有默认网关的 interface。 # --pod-network-cidr 指定 Pod 网络的范围。Kubernetes 支持多种网络方案,而且不同网络方案对 --pod-network-cidr 有自己的要求,这里设置为 10.244.0.0/16 是因为我们将使用 flannel 网络方案,必须设置成这个 CIDR。 # --image-repository Kubenetes默认Registries地址是 k8s.gcr.io,在国内并不能访问 gcr.io,在1.13版本中我们可以增加–image-repository参数,默认值是 k8s.gcr.io,将其指定为阿里云镜像地址:registry.aliyuncs.com/google_containers。 >>> docker images # 查看拉取的镜像 # 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
# 使用kebectl工具:下面的代码在kubeadm init安装结束的最后面可以找到,执行一下就行
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 # 在node加入节点后,可以查看节点的状态
NAME STATUS ROLES AGE VERSION
master NotReady master 10m v1.18.0
node1 NotReady <none> 18s v1.18.0
node2 NotReady <none> 9s v1.18.0

加入kubernetes Node节点执行

# 在node1和node2节点上执行# 向集群添加新节点,执行kubeadm init输出的kubeadm join命令:下面的代码在kubeadm init执行结束的时候可以找到
>>> kubeadm join 192.168.250.136:6443 --token ygoeiv.nk8iy57zwvyycj30 \
--discovery-token-ca-cert-hash sha256:4f861bf078d636a3177a0e7b2697ed996b1ed72dd5688ed4d3a91cff8aa57704
# token有效期24小时,过期后,重新创建>>> kubeadm token create --print-join-command

部署CNI网络插件

# 修改hosts进行映射关系访问https://www.ipaddress.com/,搜索raw.githubusercontent.com,找出对应的ip
>>> vi /etc/hosts
185.199.108.133 raw.githubusercontent.com# 获取,多执行几次,网络不好的话
# 方式一 推荐方式一
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubectl apply -f kube-flannel.yml
>>> sed -i 's/quay.io/quay-mirror.qiniu.com/g' kube-flannel.yml # 修改源
# 方式二
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml# 查看集群组件是否搭建成功
>>> kubectl get pods -n kube-systemkube-flannel-ds-p4df7
0/1 Init:ImagePullBackOff 0 122mkube-flannel-ds-plpkn 1/1 Running 3 122mkube-flannel-ds-sz8b9 1/1 Running 0 82m
# 方式二出现的问题上面的flannel一直处于Init:ImagePullBackOff,这是由于拉取镜像网络的原因解决办法:去https://github.com/flannel-io/flannel/releases/tag/v0.14.0上下载flanneld-v0.14.0-amd64.docker然后上传到master服务器上
>>> docker load -i flanneld-v0.14.0-amd64.docker
>>> docker rmi quay.io/coreos/flannel:v0.14.0 # 删除之前的镜像
>>> docker tag 8522d622299c quay.io/coreos/flannel:v0.14.0 # 将我们上传的镜像重新打标签
>>> docker rmi quay.io/coreos/flannel:v0.14.0-amd64.docker # 删除上传的镜像
>>> kubectl get pods -n kube-system # 重新查看

测试集群

# master节点下载nginx
>>> kubectl create deployment nginx --image=nginx
>>> kubectl get pod # 查看pod
>>> kubectl expose deployment nginx --port=80 --type=NodePort # 对外暴露一个端口用来访问nginx
>>> kubectl get pod,svc # 查看对外暴露的端口NAME
READY STATUS RESTARTS AGEpod/nginx-f89759699-kpq4r
1/1 Running 0 3m24sNAME
TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
AGEservice/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 156mservice/nginx
NodePort 10.110.78.94 <none> 80:30015/TCP 108s
# 页面访问192.168.250.136:30015

基于kubeadm部署k8s1.80.0的更多相关文章

  1. CentOS 7.5 通过kubeadm部署k8s-1.15.0

    kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验k ...

  2. Kubernetes-v1.12.0基于kubeadm部署

    1.主机规划 #master节点(etcd/apiserver/scheduler/controller manager)master.example.cometh0: 192.168.0.135et ...

  3. 基于 kubeadm 部署单控制平面的 k8s 集群

    单控制平面不符合 HA 要求,但用于开发/测试环境不会有任何问题,如果资源足够的话(10台以上服务器,3台用于APIserver.3台用于 etcd 存储.至少3台用于工作节点.1台作为负载均衡),可 ...

  4. ubuntu 20.04 基于kubeadm部署kubernetes 1.22.4集群及部署集群管理工具

    一.环境准备: 集群版本:kubernetes 1.22.4 服务器系统 节点IP 节点类型 服务器-内存/CUP hostname Ubuntu 20.04 192.168.1.101 主节点 2G ...

  5. kubeadm部署kubernetes-1.12.0 HA集群-ipvs

    一.概述 主要介绍搭建流程及使用注意事项,如果线上使用的话,请务必做好相关测试及压测. 1.基础环境准备 系统:ubuntu TLS 16.04  5台 docker-ce:17.06.2 kubea ...

  6. centos7之使用最新版的kubeadm体验k8s1.12.0

    1.环境准备 centos7 .docker-ce18.06.1-ce.kubeadm.kubelet.kubectl 2.安装 yum安装,准备repo文件 docker: [docker-ce-s ...

  7. kubeadm部署k8s1.9高可用集群--4部署master节点

    部署master节点 kubernetes master 节点包含的组件: kube-apiserver kube-scheduler kube-controller-manager 本文档介绍部署一 ...

  8. kubernetes 实践三:使用kubeadm安装k8s1.16.0

    环境版本说明: 三台vmware虚拟机,系统版本CentOS7.6. Kubernetes 1.16.0,当前最新版. flannel v0.11 docker 18.09 使用kubeadm可以简单 ...

  9. 使用Kubespray在ubuntu上自动部署K8s1.9.0集群

    Kubespray 是 Kubernetes incubator 中的项目,目标是提供 Production Ready Kubernetes 部署方案,该项目基础是通过 Ansible Playbo ...

  10. ubuntu 20.04 基于kubeadm部署kubernetes 1.22.4集群—报错解决

    一.添加node节点,报错1 注:可以提前在各node节点上修改好(无报错无需执行此项) yang@node2:~$ sudo kubeadm join 192.168.1.101:6443 --to ...

随机推荐

  1. [转帖]setsockopt(setsockopt的使用方法及注意事项)

    http://xingzuo.aitcweb.com/9156453.html 1. setsockopt简介 setsockopt是一个系统调用函数,用于设置套接字选项.套接字是指通信的两个端点之间 ...

  2. [转帖]BF16 与 FP16 在模型上哪个精度更高呢

    https://zhuanlan.zhihu.com/p/449345588 BF16 是对FP32单精度浮点数截断数据,即用8bit 表示指数,7bit 表示小数. FP16半精度浮点数,用5bit ...

  3. 学习MySQL,创建表,数据类型

    连接本地mysql语句 mysql -hlocalhost -uroot -proot MySQL通用语法 DDL数据库操作 DDL:数据定义语言,用来定义数据库对象(数据库,表,字段) 查询所有数据 ...

  4. 【验证码逆向专栏】某验深知 V2 业务风控逆向分析

    声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容.敏感网址.数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许 ...

  5. Gorm 数据库表迁移与表模型定义

    目录 一.Docker快速创建MySQL实例 1.1 创建 1.3 创建数据库 二.AutoMigrate介绍与使用 2.1 AutoMigrate介绍 2.2 AutoMigrate 基本使用 三. ...

  6. Go 跟踪函数调用链,理解代码更直观

    Go 跟踪函数调用链,理解代码更直观 目录 Go 跟踪函数调用链,理解代码更直观 一.引入 二.自动获取所跟踪函数的函数名 三.增加 Goroutine 标识 四.让输出的跟踪信息更具层次感 五.利用 ...

  7. 结构体定义及结构体粒度(alignment)

    结构体定义及结构体粒度(alignment) #pragma pack(1) typedef struct _STUDENT_INFORMATION_ { int Age; char v1; int ...

  8. python入门之后须掌握的知识点(模块化编程、时间模块)【一】

    相关文章: 全网最详细超长python学习笔记.14章节知识点很全面十分详细,快速入门,只用看这一篇你就学会了! python入门合集: python快速入门[一]-----基础语法 python快速 ...

  9. 3.3 Windows驱动开发:内核MDL读写进程内存

    MDL内存读写是一种通过创建MDL结构体来实现跨进程内存读写的方式.在Windows操作系统中,每个进程都有自己独立的虚拟地址空间,不同进程之间的内存空间是隔离的.因此,要在一个进程中读取或写入另一个 ...

  10. C/C++ 监控磁盘与目录操作

    遍历磁盘容量: #include <stdio.h> #include <Windows.h> void GetDrivesType(const char* lpRootPat ...