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. [转帖]Django系列3-Django常用命令

    文章目录 一. Django常用命令概述 二. Django常用命令实例 2.1 help命令 2.2 version 2.3 check 2.4 startproject 2.5 startapp ...

  2. [转贴]Python 中 -m 的典型用法、原理解析与发展演变

    在命令行中使用 Python 时,它可以接收大约 20 个选项(option),语法格式如下: python [-bBdEhiIOqsSuvVWx?] [-c command | -m module- ...

  3. [转帖]Linux如何查看网关地址

      转至:https://baijiahao.baidu.com/s?id=1733537078943023051&wfr=spider&for=pc 服务器之间的通信是通过ip地址来 ...

  4. 一个简单的监控java进程获取日志的办法

    公司里面一个长时间运行的环境会出现问题, 这边简单写了一个脚本自动获取日志信息 脚本如下 注意 我的path 其实就是复用的 我们应用里面的jdk  剩下的就非常简单了. 每个日志都自动打包 并且移除 ...

  5. vue3封装搜索表单组件

    seacrch 表单完成的功能 1.根据配置json配置项自动生成表单 ok 2.是响应式的排版 ok 3.点击搜索按钮会向上抛出值 ok 4.点击重置按钮会自动清空数据,不需要父组件额外的处理 ok ...

  6. Vue3类型判断和ref的两个作用

    1.类型判断的四种方法 isRef: 检查一个值是否为一个ref对象 isReactive:检查一个对象是否是由 reactive 创建的响应式代理 isReadonly: 检查一个对象是否是由 re ...

  7. 【2】Visual Studio 2017同时配置OpenCV2.4 以及OpenCV4.3

    相关文章: [1]windows下安装OpenCV(4.3)+VS2017安装+opencv_contrib4.3.0配置 [2]Visual Studio 2017同时配置OpenCV2.4 以及O ...

  8. LyScript 实现Hook改写MessageBox

    LyScript 可实现自定义汇编指令的替换功能,用户可以自行编写一段汇编指令,将程序中特定的通用函数进行功能改写与转向操作,此功能原理是简单的Hook操作. 插件地址:https://github. ...

  9. 关于React-Router6 (React 路由)

    一.概要 (1)每个单页应用其实是一系列的 JS 文件,当用户请求网站时,网站返回一整个(或一系列)的 js 文件和 HTML,而当用户在某个页面内点击时,你需要告诉浏览器怎么加载另一个页面地址.单页 ...

  10. docker安装oracle数据

    docker安装oracle数据库 1️⃣ 通过docker拉取并启动oracle11g(此版本目前主流),docker换源及安装mysql看Springboot创建项目及测试 - $YX$ - 博客 ...