centos7.2 部署k8s集群
一、背景
二、使用范围
♦ 测试环境及实验环境
三、安装前说明
♦ k8s网络基本概念
♦ 集群规划图
♦ 软件版本选取
Name |
Version |
Description |
docker-ce |
18.06.1 |
容器 |
kubelet |
1.12.3 |
k8s和docker的中间桥梁,保证容器被启动并持续运行 |
kubeadm |
1.12.3 |
集群安装工具 |
kubectl |
1.12.3 |
集群管理工具 |
kube-apiserver |
1.12.3 |
集群入口,对外提供接口以操作资源 |
kube-controller-manager |
1.12.3 |
所有资源的自动化控制中心 |
kube-scheduler |
1.12.3 |
负责资源调度 |
kube-proxy |
1.12.3 |
实现service通信与负载均衡 |
etcd |
3.2.24 |
保存集群网络配置和资源状态信息 |
coredns |
1.2.2 |
自动发现service name(相当于集群内部DNS) |
pause |
3.1 |
接管pod网络信息 |
flannel |
v0.10.0 |
网络插件,负责网络自动划分 |
四、集群安装实例:
1.基础服务:(请在所有节点执行)
♦ 关闭防火墙
[root@k8s-master ~]# systemctl stop firewalld.service
[root@k8s-master ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
♦ 关闭selinux
sed -i s'/enforcing/disabled/' /etc/selinux/config
♦ 添加hosts
[root@k8s-master ~]# echo “10.10.14.53 k8s-master
10.10.14.55 k8s-node1
10.10.14.57 k8s-node2” >> /etc/hosts
♦ yum 安装docker-ce
注:需先添加docker-ce.repo到/etc/yum.repos.d(见附件)
##查看docker-ce历史版本
yum list docker-ce --showduplicates
##选择需要的docker版本
yum install docker-ce-18.06.1.ce-3.el7 -y
注:kubernetes 1.12暂不支持docker-ce 18.06以上的版本
##添加开机启动并启动服务
[root@k8s-node-1 yum.repos.d]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@k8s-node-1 yum.repos.d]# systemctl start docker
[root@k8s-node-1 yum.repos.d]# docker -v
Docker version 18.06.1-ce, build e68fc7a
♦ 开启IPV4路由转发
[root@k8s-node-1 yum.repos.d]# echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf
[root@k8s-node-1 yum.repos.d]# sysctl -p
♦ Yum安装kubernetes相关管理工具
注:需先添加kubernetes.repo到/etc/yum.repos.d(见附件)
##查看各插件历史版本
[root@k8s-master yum.repos.d]# yum list kubelet --showduplicates
##选择需要的版本
[root@k8s-master yum.repos.d]# yum install -y kubelet-1.12.3-0 kubeadm-1.12.3-0 kubectl-1.12.3-0 --disableexcludes=kubernetes
##添加开机自启动
[root@k8s-master yum.repos.d]# systemctl enable kubelet && systemctl start kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /etc/systemd/system/kubelet.service.
2. 初始化master节点:
♦ 拉取kubernetes模块镜像
注:kubernetes是谷歌的产品,因某些不可描述的因素国内无法直接从谷歌下载镜像,故我已将相关模块的镜像上传到私服,从私服下载再docker tag成需要的名字即可。首次登录私服需先上传证书ca.crt到/etc/docker/certs.d/harbor.linshimuye.com
需要将私服服务端的证书放在客服端
[root@k8s-node-1 yum.repos.d]# mkdir -p /etc/docker/certs.d/harbor.linshimuye.com
[root@k8s-node-1 harbor.linshimuye.com]# ll
total 4
-rw-r--r-- 1 root root 2000 Dec 12 20:39 ca.crt
♦ 添加私服的域名至hosts或者修改DNS
[root@k8s-node-1 harbor.linshimuye.com]# echo "10.10.14.56 harbor.linshimuye.com" >> /etc/hosts
登录私服: [root@k8s-node-1 harbor.linshimuye.com]# docker login -u xxxx -p xxxxx harbor.linshimuye.com
拉取K8s需要的镜像:(master节点需要的镜像)
docker pull harbor.linshimuye.com/kubernetes/kube-proxy:v1.12.3
docker pull harbor.linshimuye.com/kubernetes/pause:3.1
docker pull harbor.linshimuye.com/kubernetes/etcd:3.2.24
docker pull harbor.linshimuye.com/kubernetes/kube-apiserver:v1.12.3
docker pull harbor.linshimuye.com/kubernetes/flannel:v0.10.0-amd64
docker pull harbor.linshimuye.com/kubernetes/coredns:1.2.2
docker pull harbor.linshimuye.com/kubernetes/kube-controller-manager:v1.12.3
docker pull harbor.linshimuye.com/kubernetes/kube-scheduler:v1.12.3
修改镜像名称:
修改前:harbor.linshimuye.com/kubernetes/xxxx 修改后: k8s.gcr.io/xxxx
例如: harbor.linshimuye.com/kubernetes/kube-proxy:v1.12.3 k8s.gcr.io/kube-proxy:v1.12.3
harbor.linshimuye.com/kubernetes/flannel:v0.10.0-amd64 quay.io/coreos/flannel:v0.10.0-amd64 (只有这个名字不一样)
docker tag harbor.linshimuye.com/kubernetes/kube-proxy:v1.12.3 k8s.gcr.io/kube-proxy:v1.12.3
docker tag harbor.linshimuye.com/kubernetes/flannel:v0.10.0-amd64 quay.io/coreos/flannel:v0.10.0-amd64
docker tag harbor.linshimuye.com/kubernetes/pause:3.1 k8s.gcr.io/pause:3.1
docker tag harbor.linshimuye.com/kubernetes/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag harbor.linshimuye.com/kubernetes/kube-apiserver:v1.12.3 k8s.gcr.io/kube-apiserver:v1.12.3
docker tag harbor.linshimuye.com/kubernetes/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2
docker tag harbor.linshimuye.com/kubernetes/kube-controller-manager:v1.12.3 k8s.gcr.io/kube-controller-manager:v1.12.3
docker tag harbor.linshimuye.com/kubernetes/kube-scheduler:v1.12.3 k8s.gcr.io/kube-scheduler:v1.12.3
(node节点的镜像)
docker pull harbor.linshimuye.com/kubernetes/kube-proxy:v1.12.3
docker pull harbor.linshimuye.com/kubernetes/flannel:v0.10.0-amd64
docker pull harbor.linshimuye.com/kubernetes/pause:3.1
docker tag harbor.linshimuye.com/kubernetes/kube-proxy:v1.12.3 k8s.gcr.io/kube-proxy:v1.12.3
docker tag harbor.linshimuye.com/kubernetes/flannel:v0.10.0-amd64 quay.io/coreos/flannel:v0.10.0-amd64
docker tag harbor.linshimuye.com/kubernetes/pause:3.1 k8s.gcr.io/pause:3.1
♦ 修改kubeadm配置(每个节点都需要添加)
## kubelet的文件修改后如下
[root@k8s-node-4 ~]# more /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS=--fail-swap-on=false
You have new mail in /var/spool/mail/root
注:此处设置kubernetes不使用swap
♦ 初始化master节点
[root@k8s-master ~]# kubeadm init --kubernetes-version=1.12.3 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=10.10.14.53 --ignore-preflight-errors=swap
##如果报错
[init] using Kubernetes version: v1.12.3
[preflight] running pre-flight checks
[WARNING Swap]: running with swap on is not supported. Please disable swap
[preflight] Some fatal errors occurred:
[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
解决办法:[root@k8s-master ~]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
[root@k8s-master ~]# kubeadm init --kubernetes-version=1.12.3 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=10.10.14.53 --ignore-preflight-errors=swap
♦ 把kubeadmin配置文件复制到当前用户的家目录
[root@k8s-master ~]# mkdir -p $HOME/.kube
[root@k8s-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master ~]# chown $(id -u):$(id -g) $HOME/.kube/config
♦ 安装 flannel(master节点)
wget -o https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
##--pod-network-cidr=10.244.0.0/16:划分pod的网段,--apiserver-advertise-address=10.10.14.53:这是master节点的IP
♦ 查看节点信息
[root@k8s-master kubernetes]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 15h v1.12.3
♦ node 节点加入集群
[root@k8s-node-2 ~]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
[root@k8s-node-2 ~]# kubeadm join 10.10.14.53:6443 --token 4hhvup.tcqgb80naxo395z6 --discovery-token-ca-cert-hash sha256:52640307420a8eaeaa315bee52a62309a5684d38165b8c691e290874ac41d35e --ignore-preflight-errors=swap
♦ 查看集群和各节点运行情况
[root@k8s-master ~]# kubectl get nodes
♦ 查看集群和各pod的运行情况
[root@k8s-master ~]# kubectl get pod --all-namespaces -o wide
♦ 清除警告和错误,需要清空节点配置
如在配置过程出现问题,可用以下方法清空配置
♦ node节点
## 在master节点清空node配置
[root@k8s-master ~]# kubectl drain k8s-node1 --delete-local-data --force --ignore-daemonsets
[root@k8s-master ~]# kubectl delete node k8s-node-1
## 在node节点清空配置
[root@k8s-node1 ~]# kubeadmin reset
##注意,master节点不要轻易reset,否则就需要重新配置
master节点创建永不过期token
♦ kubeadm token create --ttl 0 --print-join-command
xpt-sit token:
参考地址:https://blog.csdn.net/solaraceboy/article/details/83308339
centos7.2 部署k8s集群的更多相关文章
- centos7.8 安装部署 k8s 集群
centos7.8 安装部署 k8s 集群 目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 kub ...
- 在CentOS7上部署Kubernetes集群
在CentOS7上部署Kubernetes集群 文/FCBusquest 2015-12-22 18:36:00 简介 Kubernetes(k8s)是Google开源的大规模容器集群管理系统, 本文 ...
- 使用kubeadm部署k8s集群[v1.18.0]
使用kubeadm部署k8s集群 环境 IP地址 主机名 节点 10.0.0.63 k8s-master1 master1 10.0.0.63 k8s-master2 master2 10.0.0.6 ...
- 二进制方法-部署k8s集群部署1.18版本
二进制方法-部署k8s集群部署1.18版本 1. 前置知识点 1.1 生产环境可部署kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式 kuberadm Kubea ...
- 【02】Kubernets:使用 kubeadm 部署 K8S 集群
写在前面的话 通过上一节,知道了 K8S 有 Master / Node 组成,但是具体怎么个组成法,就是这一节具体谈的内容.概念性的东西我们会尽量以实验的形式将其复现. 部署 K8S 集群 互联网常 ...
- 部署K8S集群
1.Kubernetes 1.1.概念 kubernetes(通常称为k8s)用于自动部署.扩展和管理容器化应用程序的开源系统.它旨在提供“跨主机集群的自动部署.扩展以及运行应用程序容器的平台”.支持 ...
- 菜鸟系列k8s——快速部署k8s集群
快速部署k8s集群 1. 安装Rancher Rancher是业界唯一完全开源的企业级容器管理平台,为企业用户提供在生产环境中落地使用容器所需的一切功能与组件. Rancher2.0基于Kuberne ...
- Ansible自动化部署K8S集群
Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新.Ansible适用于管理企 ...
- 使用RKE快速部署k8s集群
一.环境准备 1.1环境信息 IP地址 角色 部署软件 10.10.100.5 K8s Master Etcd.Control 10.10.100.17 K8s Worker1 Worker 10.1 ...
随机推荐
- 分析CPU使用率不断增加的原因
工程中发现引起的问题: 结合别的朋友的意见,我的优化思路是: 1.排查是否内存泄漏 经过反复查询代码,未发现有内存泄漏(可以自己百度搜索C#内存泄漏的原因).可以通过任务管理器分析是否有内存泄漏,打开 ...
- 在 Win7、Win10 家庭版中启用组策略(gpedit.msc)
Windows 家庭版并没有组策略,对于计算机维护.优化和设置非常不方便.使用以下批处理可以在不安装专业版.旗舰版的情况下启用组策略. 一.新建一个批处理脚本 1 @echo off 2 3 push ...
- 1050 螺旋矩阵 (25 分)C语言
本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第 1 个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为 m 行 ...
- wrk性能测试(详解)
一.简介 wrk 是一款针对 Http 协议的基准测试工具,它能够在单机多核 CPU 的条件下,使用系统自带的高性能 I/O 机制,如 epoll,kqueue 等,通过多线程和事件模式,对目标机器产 ...
- 小小知识点(三十九) 正交频分复用OFDM的基本原理及实现
引言 符号间干扰(ISI)是无线传输系统设计中需要考虑的因素,采用什么样的处理方法取决于数据传输速率或等效传输带宽来决定 (1)若数据速率低且与信道最大延迟相比符号持续时间较长,那么就可能无需任何均衡 ...
- gcc 命令详解
1. gcc -E source_file.c-E,只执行到预编译.直接输出预编译结果. 2. gcc -S source_file.c -S,只执行到源代码到汇编代码的转换,输出汇编代码. 3. g ...
- NSOperationQueue队列依赖相关思考
添加依赖后,队列中网络请求任务有依赖关系时,任务结束判定以数据返回为准还是以发起请求为准? waitUntilFinished方法容易误解. 依赖关系 // // ViewController.m / ...
- 移动web 1像素边框
实现方法 border-image 图片 实现 这篇文章是腾讯github上的解决方案border-image来实现的 链接走起 <使用border-image实现类似iOS7的1px底边> ...
- Centos 中文乱码解决方法
问题描述 crontab -e 添加定时任务时,直接将下面内容粘贴过去,结果竟然乱码了. # 每个星期日凌晨3:00执行完全备份脚本 0 3 * * 0 /bin/bash -x /root/bash ...
- Go和Java的性能对比,真的如此吗?
前两天我看到了一篇文章,测试Java和Go和Python的性能,其测试内容是一个排序,排序一亿次,然后看那个语言耗时最短,我先贴一下这个文章的测试结果,Java竟然比Go快了一倍不止,Go不是号称接近 ...