2020年3月16日第一天,今天计划学习:K8S Kubeadm 1.14的完美部署
------------恢复内容开始------------
一、部署docker
- 1. 部署docker容器虚拟化平台并配置docker的环境
下载新的yum配置文件
wget http://mirrors.aliyun.com/repo/Centos-7.repo
[root@mater ~]# cd /etc/yum.repos.d
[root@mater yum.repos.d]# ll
- 2. 安装docker的环境依赖
[root@mater yum.repos.d]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@mater yum.repos.d]# yum -y install device-mapper-persistent-data lvm2
- 3. 配置docker的国内yum源
[root@mater yum.repos.d]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@mater yum.repos.d]#ll
4.安装docker-ce并启动同时设置成开机自启动
[root@mater ~]# yum install docker-ce docker-ce-cli containerd.io -y
[root@mater ~]# systemctl start docker
[root@mater ~]# systemctl enable docker
5.查看docker版本信息
[root@mater ~]# docker version
[root@mater ~]# docker info
6.使用国内aliyun的docker镜像加速器,提升pull的速度;
https://cr.console.aliyun.com/
7.创建配置文件deamon.json
[root@mater ~]# vim /etc/docker/daemon.json
{
"registry-mirrors":["https://8w3y99jm.mirror.aliyuncs.com"]
}
[root@mater ~]# systemctl daemon-reload
[root@mater ~]# systemctl restart docker
8.下载docker镜像
[root@mater ~]# docker pull centos
[root@mater ~]# docker images
9.开启网络转发功能
[root@mater ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward =1
10.关闭防火墙并重新启动docker
[root@mater ~]# systemctl stop firewalld
Failed to stop firewall.service: Unit firewall.service not loaded.
[root@mater ~]# systemctl restart docker
11.运行docker:
[root@mater ~]# docker run -it centos:latest bash
[root@55faa3007fa6 /]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)
12.安装HTTPD的docker容器
[root@mater ~]# docker run -it centos:latest /bin/bash
[root@8a1643dcfea5 /]# yum -y install httpd
方法一.制作含HTTP的docker容器
[root@mater ~]# docker ps -a
[root@mater ~]# docker commit 1e7039d965d5 centos:apache
方法二.通过docker build创建一个基于centos的http web 服务镜像
[root@mater ~]# mkdir /docker-build
[root@mater docker-build]# touch Dockerfile
编辑Dockerfile文件;
编辑start.sh文件
Docker-build目录下的文件
制作docker镜像
[root@mater docker-build]# docker build -t centos:httpd ./
启动制作好的docker镜像并端口转发
[root@mater docker-build]# docker run -d -p 80:80 centos:httpd
二、配置好基础网络及防火墙关闭
1、配置hostname主机名称:
[root@m1 ~]# vim /etc/hostname
#修改主机名称的方法:
[root@m1 ~]#hostnamectl set-hostname m1
# 配置host,使所有节点之间可以通过hostname互相访问
$ vi /etc/hosts
# <node-ip> <node-hostname>
#配置hosts 让所有节点之间可以通过hostname互相访问
[root@m1 ~]# vim /etc/hosts
192.168.23.10 m1
192.168.23.11 m2
192.168.23.12 m3
2 、安装依赖包
[root@m1 ~]# yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp
3 、关闭防火墙、swap,重置iptables
@ 关闭防火墙
[root@m1 ~]# systemctl stop firewalld && systemctl disable firewalld
@ 重置iptables
[root@m1 ~]# iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT
@ 关闭swap
[root@m1 ~]# swapoff -a
[root@m1 ~]# sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab
@ 关闭selinux
[root@m1 ~]# setenforce 0
[root@m1 ~]# cd /etc/selinux
[root@m1 selinux]# vim config
SELINUX=Permissive
@ 关闭dnsmasq(否则可能导致docker容器无法解析域名)
[root@m1 ~]# systemctl stop dnsmasq && systemctl disable dnsmasq
三、配置免密登录其他服务器
[root@m1 ~]# ssh-keygen -t rsa -f y
配置免密码登录其他节点
[root@m1 ~]# for i in m1 m2 m3;do ssh-copy-id -i .ssh/id_rsa.pub $i;done
四、对m1 m2 m3进行做快照
五、下载k8s 1.14版本
1、系统参数设置
# 制作配置文件
[root@m1 ~]# cat > /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
EOF
# 生效文件
[root@m1 ~]#sysctl -p /etc/sysctl.d/kubernetes.conf
2 安装方法
# 配置yum源(mirrors.aliyun.com)
[root@m1 ~]#cat <<EOF > /etc/yum.repos.d/k8s.repo
[k8s]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
EOF
# 安装工具
# 找到要安装的版本号
[root@m1 ~]# yum list kubeadm --showduplicates | sort -r
# 安装指定版本(这里用的是1.14.0)
[root@m1 ~]# yum install -y kubeadm-1.14.0-0 kubelet-1.14.0-0 kubectl-1.14.0-0 --disableexcludes=kubernetes
[root@m1 ~]#yum install -y kubeadm-1.14.9-0 kubelet-1.14.9-0 kubectl-1.14.9-0 --disableexcludes=kubernetes
# 设置kubelet的cgroupdriver(kubelet的cgroupdriver默认为systemd,如果上面没有设置docker的exec-opts为systemd,这里就需要将kubelet的设置为cgroupfs)
# 启动kubelet
[root@m1 ~]#systemctl enable kubelet && systemctl start kubelet
3 开始部署
K8S v1.14.9的版本需要部署的IMAGES
k8s.gcr.io/kube-apiserver:v1.14.9
k8s.gcr.io/kube-controller-manager:v1.14.9
k8s.gcr.io/kube-scheduler:v1.14.9
k8s.gcr.io/kube-proxy:v1.14.9
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
制作好下载镜像的.sh文件
#!/bin/bash
KUBE_VERSION=v1.14.9
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.3.10
DNS_VERSION=1.3.1
username=registry.cn-hangzhou.aliyuncs.com/google_containers
images=(kube-proxy-amd64:${KUBE_VERSION}
kube-scheduler-amd64:${KUBE_VERSION}
kube-controller-manager-amd64:${KUBE_VERSION}
kube-apiserver-amd64:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd-amd64:${ETCD_VERSION}
coredns:${DNS_VERSION}
)
for image in ${images[@]}
do
docker pull ${username}/${image}
docker tag ${username}/${image} k8s.gcr.io/${image}
#docker tag ${username}/${image}
gcr.io/google_containers/${image}
docker rmi ${username}/${image}
done
imageRepository: k8s.gcr.io #镜像仓库地址,在国内的话,可以修改为gcr.azk8s.cn/google_containers
[root@m1 ~]# kubeadm config images pull
--config=init-config.yaml
# kubeadm config print init-defaults >
init.default.yaml
# vim init-config.yaml
# kubeadm images list
Available
Commands:
init-defaults Print default init
configuration, that can be used for 'kubeadm init'
join-defaults Print default join
configuration, that can be used for 'kubeadm join'
join-defaults文件:
apiVersion:
kubeadm.k8s.io/v1beta1
caCertPath:
/etc/kubernetes/pki/ca.crt
discovery:
bootstrapToken:
apiServerEndpoint: kube-apiserver:6443
token: abcdef.0123456789abcdef
unsafeSkipCAVerification: true
timeout: 5m0s
tlsBootstrapToken: abcdef.0123456789abcdef
kind:
JoinConfiguration
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: m2
修改好的join-confing.yaml文件:
apiVersion:
kubeadm.k8s.io/v1beta1
kind:
JoinConfiguration
discovery:
bootstrapToken:
apiServerEndpoint: 192.168.23.10:6443
token: abcdef.0123456789abcdef
unsafeSkipCAVerification: true
tlsBootstrapToken: abcdef.0123456789abcdef
nodeRegistration:
name: m2
安装Node 节点
[root@m2
~]# kubeadm join --config=jion-config.yaml
------------恢复内容结束------------
2020年3月16日第一天,今天计划学习:K8S Kubeadm 1.14的完美部署的更多相关文章
- .NET 5 Preview 1中的ASP.NET Core更新 (2020年3月16日)
.NET 5 Preview1现在可用,可以进行评估了! .NET 5将是当前版本. 开始 要在.NET 5.0中开始使用 ASP.NET Core,请安装.NET 5.0 SDK. 如果您使用的是W ...
- 6月28日至7月6日第一周小学期学习c++编程收获
6.28日开始,进入小学期,也就是在10天十天时间内集中练习,以提高编程能力.此次小学期的作业共有十道题,其中分为四大类,系统类,数学类,游戏类,链表类. 我开始的时候面对第一,二题,系统类,因为当时 ...
- 2019年IntelliJ IDEA 最新注册码,亲测可用(截止到2020年3月11日)
2019年IntelliJ IDEA 最新注册码(截止到2020年3月11日) 操作步骤: 第一步: 修改 hosts 文件 ~~~ 在hosts文件中,添加以下映射关系: 0.0.0.0 acco ...
- 北京Uber优步司机奖励政策(12月16日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 北京Uber优步司机奖励政策(11月16日~11月22日)
用户组:人民优步“关羽组”(适用于11月16日-11月22日)奖励政策: 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/ ...
- 20.Nodejs基础知识(上)——2019年12月16日
2019年12月16日18:58:55 2019年10月04日12:20:59 1. nodejs简介 Node.js是一个让JavaScript运行在服务器端的开发平台,它让JavaScript的触 ...
- 一个由"2020年1月7日 京东出现的重大 Bug 漏洞"引起的思考...
2020年1月7日,京东由于优惠券设置错误,导致大量产品以0元或者超低价成交,并且发货.网传小家电被薅24万件,损失损失金额高达7000多万.很多网友表示收到货了,在网上晒出到货截图.下面为购买截图: ...
- .NET Conf 2020大会将于2020年11月10日--- 11月12日举行 (UTC)时区
.NET Conf 2020大会将于2020年11月10日--- 11月12日举行 (UTC)时区 开始时间 2020年11月10日 08:00 (PT) | 16:00 (UTC)| 24:00(北 ...
- 11月16日《奥威Power-BI基于SQL的存储过程及自定义SQL脚本制作报表》腾讯课堂开课啦
上周的课程<奥威Power-BI vs微软Power BI>带同学们全面认识了两个Power-BI的使用情况,同学们已经迫不及待想知道这周的学习内容了吧!这周的课程关键词—— ...
随机推荐
- NOIP2015 解题报告
Day1 T3 运输计划 二分之后做一遍树上差分,找出被所有时间超限的运输计划覆盖的花费时间最长的航道,将其改造成虫洞. LCA 用倍增求可能会被卡常,建议用 Tarjan 求.
- 2. git命令行操作之本地库操作
2.1 本地库初始化 git init 命令 用于创建一个空的Git本地仓库或重新初始化一个现有本地仓库 注:.git目录中存放的是本地库相关的子目录和文件,不要删除也不要随意修改 git confi ...
- Java蓝桥杯练习题——求小数n位后3个数
求整数除法小数点后第n位开始的3位数 位数不足的补0,如0.125小数第3位后三位:0.12500→500 输入格式:a b n,空格分开,a是被除数,b是除数,n是小数后的位置 输出格式:3位数字, ...
- Mybatis【2.1】-- 从读取流到创建SqlSession发生了什么?
目录 1.Resources.getResourceAsStream("mybatis.xml")到底做了什么? 2. new SqlSessionFactoryBuilder() ...
- 编程C语言进阶篇——自定义数据类型:共同体
什么是"自定义数据类型"?顾名思义,就是用户可以随时在程序中自行定义新的数据类型.自定义数据类型时需要设置数据类型的名称及其成员.数据类型成员各属性的设置方法等同于变量设置时相应属 ...
- C语言项目——工程化编程的案例分析
一.VSCode安装及环境配置 初始在Win下安装Mingw-w64/GCC 和 GDB,在VSCode下打开项目案例,发现在linktable中需要包含pthread头文件.此文件是基于Linux系 ...
- Centos7.2 安装docker、mysql和redis
环境信息 Docker是什么? Docker就是一个平台,这个平台具备开发.发布和运行应用程序的功能,在项目生命周期中,我们可以运用Docker实现快速交付.测试和部署.Docker通过将运行环境打包 ...
- 测试开发工程必备技能之一:Mock的使用
1. 背景 在实际产品开发过程中,某个服务或前端依赖一个服务接口,该接口可能依赖多个底层服务或模块,或第三方接口,比如说服务 A 依赖服务B,服务B又依赖服务 C,如下图所示: 这种依赖的问题会导致原 ...
- 为什么Python中sort方法和sorted函数调用废弃使用cmp参数
Python中sort方法和sorted函数老猿在前面一些章节介绍过,具体语法及含义在此不再展开说明,但老猿在前面学习相关内容时,只使用了简单的案例,对这两个方法的key参数没有深入研究,总以为就是以 ...
- Python中排序函数sorted和排序方法sort的异同点对比分析
Python中对序列进行排序有两种方法,一种是使用python内置的全局sorted函数,另一种是使用序列内置的sort方法. 一. 两者相同点 在支持sort方法的序列中都可以对序列进行排序: 二者 ...