CentOS7 使用 kubeadm 搭建 k8s 集群
一 安装Docker-CE
前言
Docker 使用越来越多,安装也很简单,本次记录一下基本的步骤。
Docker 目前支持 CentOS 7 及以后的版本,内核要求至少为 3.10。
Docker 官网有安装步骤,本文只是记录一下,您也可以参考 Get Docker CE for CentOS
环境说明
CentOS 7(Minimal Install)
$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
准备工作
操作系统要求
CentOS 7 以后都可以安装 Docker 了,也可以确认一下。
$ uname -a
Linux localhost.localdomain 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Docker 需要用到 centos-extra
这个源,如果您关闭了,需要重启启用,可以参考 Available Repositories for CentOS。
卸载旧版本
旧版本的 Docker 被叫做 docker
或 docker-engine
,如果您安装了旧版本的 Docker ,您需要卸载掉它。
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
旧版本的内容在 /var/lib/docker
下,目录中的镜像(images), 容器(containers), 存储卷(volumes), 和 网络配置(networks)都可以保留。
Docker CE 包,目前的包名为 docker-ce
。
安装
安装准备
为了方便添加软件源,支持 devicemapper 存储类型,安装如下软件包
$ sudo yum update
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
添加 yum 软件源
添加 Docker 稳定版本的 yum 软件源
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装 Docker
更新一下 yum 软件源的缓存,并安装 Docker。
$ sudo yum update
$ sudo yum install docker-ce
如果弹出 GPG key 的接收提示,请确认是否为 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35
,如果是,可以接受并继续安装。
至此,Docker 已经安装完成了
如果你是root用户 直接跳到下边 启动 Docker
Docker 服务是没有启动的,操作系统里的 docker 组被创建,但是没有用户在这个组里。
注意
默认的 docker 组是没有用户的(也就是说需要使用 sudo 才能使用 docker 命令)。
您可以将用户添加到 docker 组中(此用户就可以直接使用 docker 命令了)。
加入 docker 用户组命令
$ sudo usermod -aG docker USER_NAME
用户更新组信息后,重新登录系统即可生效。
安装指定版本
如果想安装指定版本的 Docker,可以查看一下版本并安装。
$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
可以指定版本安装,版本号可以忽略 :
和 el7
,如 docker-ce-18.09.1
$ sudo yum install docker-ce-<VERSION STRING>
至此,指定版本的 Docker 也安装完成,同样,操作系统内 docker 服务没有启动,只创建了 docker 组,而且组里没有用户。
启动 Docker
如果想添加到开机启动
$ sudo systemctl enable docker
启动 docker 服务
$ sudo systemctl start docker
验证安装
验证 Docker CE 安装是否正确,可以运行 hello-world
镜像
$ sudo docker run hello-world
可以使用命令查看hello-world镜像是否被拉去下来
$ docker images
更新和卸载 Docker
使用 yum 管理,更新和卸载都很方便。
更新 Docker CE
$ sudo yum update docker-ce
卸载 Docker CE
$ sudo yum remove docker-ce
删除本地文件
注意,docker 的本地文件,包括镜像(images), 容器(containers), 存储卷(volumes)等,都需要手工删除。默认目录存储在 /var/lib/docker
。
$ sudo rm -rf /var/lib/docker
二 安装Shadowsocks客户端
1.安装客户端
yum -y install epel-release
yum -y install python-pip
pip install shadowsocks
此时使用pip安装的是shadowsocks 2.8.2,比版本不支持aes-256-gcm加密方式,会报“method aes-256-gcm not supported ”的错
所以我们执行以下命令升级
pip install https://github.com/shadowsocks/shadowsocks/archive/master.zip -U
2.配置Shadowsocks客户端
新建配置文件
mkdir /etc/shadowsocks
vim /etc/shadowsocks/shadowsocks.json
添加如下信息
{
"server":"1.1.1.1",
"server_port":1035,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"password",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false,
"workers": 1
}
配置自启动
新建启动脚本文件
vim /etc/systemd/system/shadowsocks.service
添加内容如下:
[Unit]
Description=Shadowsocks
[Service]
TimeoutStartSec=0
ExecStart=/usr/bin/sslocal -c /etc/shadowsocks/shadowsocks.json
[Install]
WantedBy=multi-user.target
启动Shadowsocks客户端
systemctl enable shadowsocks.service
systemctl start shadowsocks.service
systemctl status shadowsocks.service
验证Shadowsocks客户端是否正常运行
curl --socks5 127.0.0.1:1080 http:*//httpbin.org/ip*
若Shadowsock客户端已正常运行,则结果如下:
{
"origin": "x.x.x.x" #你的Shadowsock服务器IP
}
三 安装配置Privoxy
1.安装Privoxy
yum -y install privoxy
systemctl enable privoxy
systemctl start privoxy
systemctl status privoxy
2.配置Privoxy
1.修改配置文件
vim /etc/privoxy/config
确保如下内容没有被注释掉
listen-address 127.0.0.1:8118 # 8118 是默认端口,不用改
forward-socks5t / 127.0.0.1:1080 . #转发到本地端口,注意最后有个点
2.设置http/https代理
vim /etc/profile
添加如下信息
PROXY_HOST=127.0.0.1
export all_proxy=http://$PROXY_HOST:8118
export ftp_proxy=http://$PROXY_HOST:8118
export http_proxy=http://$PROXY_HOST:8118
export https_proxy=http://$PROXY_HOST:8118
export no_proxy=localhost,172.16.0.0/16,192.168.0.0/16.,127.0.0.1,10.10.0.0/16
导入下环境
source /etc/profile
3.测试
curl www.google.com
四 其他配置
关闭 Swap
sudo swapoff -a
#要永久禁掉swap分区,打开如下文件注释掉swap那一行
# sudo vi /etc/fstab
关闭 SELinux
# 临时禁用selinux
# 永久关闭 修改/etc/sysconfig/selinux文件设置
sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
# 这里按回车,下面是第二条命令
setenforce 0
配置转发参数
# 配置转发相关参数,否则可能会出错
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness=0
EOF
# 这里按回车,下面是第二条命令
sysctl --system
五 安装 Kuberentes
安装 kubeadm,kubelet,kubectl
kubeadm —— 启动 k8s 集群的命令工具
kubelet —— 集群容器内的命令工具
kubectl —— 操作集群的命令工具
注意:所有机器都需安装docker, kubeadm, kubelet和kubectl
配置docker代理 —————-全局代理没用,得用这个代理配合ss
mkdir -p /etc/systemd/system/docker.service.d
添加如下内容到/etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:8118" "NO_PROXY=localhost,172.16.0.0/16,127.0.0.1,10.244.0.0/16"
添加如下内容到/etc/systemd/system/docker.service.d/https-proxy.conf
[Service]
Environment="HTTPS_PROXY=https://127.0.0.1:8118" "NO_PROXY=localhost,172.16.0.0/16,127.0.0.1,10.244.0.0/16"
查看代理内容
docker info | grep -i proxy
添加 kubernetes 的 yum 源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
安装
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && sudo systemctl start kubelet
至此,在所有机器上安装所需的软件已经结束。
但,你别高兴太早,过程并不会很顺利
你会遇到各种问题
下边对已知问题总结
安装过程中无法访问mirrors,或者yum ,我们尝试换源解决
替换国内yum源
#进入yum配置文件目录
cd /etc/yum.repos.d/
#备份配置文件
mv CentOS-Base.repo CentOS-Base.repo.backup
#在CentOS中配置使用网易和阿里的开源镜像
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
wget http://mirrors.aliyun.com/repo/Centos-7.repo
清除系统yum缓存并生成新的yum缓存
yum clean all #清除Yum缓存
yum makecache #把服务器的包信息下载到本地电脑缓存起来
yum update #升级包同时也升级软件和系统内核
安装epel源
[root@bogon yum.repos.d]# yum list | grep epel-release
[root@bogon yum.repos.d]# yum install -y epel-release
[root@bogon yum.repos.d]# ls # epel源安装成功,比原来多了一个epel.repo和epel-testing.repo文件
Centos-7.repo CentOS-Base-163.repo epel.repo epel-testing.repo repo.bak
使用阿里开源镜像提供的epel源
[root@bogon yum.repos.d]# wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo # 下载阿里开源镜像的epel源文件
[root@localhost yum.repos.d]# ls
CentOS7-Base-163.repo epel-7.repo epel-testing.repo
Centos-7.repo epel.repo repo_bak
再次清除系统yum缓存,并重新生成新的yum缓存
[root@bogon yum.repos.d]# yum clean all # 清除系统所有的yum缓存
[root@bogon yum.repos.d]# yum makecache # 生成yum缓存
到此 你开心的执行安装命令继续了
六 在master上配置
初始化K8S
通过kubeadm init命令来初始化,指定一下kubernetes版本,并设置一下pod-network-cidr。
kubeadm init --kubernetes-version=v1.14.3 --pod-network-cidr=10.244.0.0/16
等待执行完成后,会看到类似如下的提示,非常友好,这行内容先记录下,等下节点添加的时候要使用。
kubeadm join --token 2fae1b.e4306e679794caaf 172.16.93.220:6443 --discovery-token-ca-cert-hash sha256:26d12811d5a60ecd91ba6bfea03daa34460d6143ceb11777179fd02e09f0ad16
每个人都不同,请不要复制
如果初始化失败,可以重置下,再初始化
kubeadm reset #------注意用完这个,重装之后,可能遇到kubectl显示认证不过无法使用,这是多执行一次屏幕回显的注册adminconf指令那几条,就ok了
添加K8S配置 —– 装完按照屏幕回显操作即可,不用复制这里的,每个版本不一样
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
安装network addon
要docker之间能互相通信需要做些配置,这里用Flannel来实现 —–中间版本的地方换成master就是安装最新的
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
安装完成后,检查下kube-dns是否安装成功。kube-dns比较重要,它负责整个集群的解析,要确保它正常运行。使用kubectl get pods –all-namespaces
命令查看
七 node加入集群
在另一台机器上执行
kubeadm join --token 2fae1b.e4306e679794caaf 172.16.93.220:6443 --discovery-token-ca-cert-hash sha256:26d12811d5a60ecd91ba6bfea03daa34460d6143ceb11777179fd02e09f0ad16
顺利的话可以看到类似如下的提示
Run 'kubectl get nodes' on the master to see this node join the cluster.
在master上执行kubectl get nodes
查看节点
八 配置dashboard
默认是没web界面的,可以在master机器上安装一个dashboard插件,实现通过web来管理
TODO…
本文参考
https://blog.csdn.net/golduty2/article/details/80700491?tdsourcetag=s_pcqq_aiomsg
https://blog.csdn.net/u012570862/article/details/80150988?tdsourcetag=s_pcqq_aiomsg
https://qizhanming.com/blog/2019/01/25/how-to-install-docker-ce-on-centos-7
https://www.jianshu.com/p/86a7f90bcbae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
CentOS7 使用 kubeadm 搭建 k8s 集群的更多相关文章
- kubeadm搭建K8s集群及Pod初体验
基于Kubeadm 搭建K8s集群: 通过上一篇博客,我们已经基本了解了 k8s 的基本概念,也许你现在还是有些模糊,说真的我也是很模糊的.只有不断地操作去熟练,强化自己对他的认知,才能提升境界. 我 ...
- kubeadm 搭建 K8S集群
kubeadm是K8s官方推荐的快速搭建K8s集群的方法. 环境: Ubuntu 16.04 1 安装docker Install Docker from Ubuntu’s repositories: ...
- centos7使用kubeadm搭建kubernetes集群
一.本地实验环境准备 服务器虚拟机准备 IP CPU 内存 hostname 192.168.222.129 >=2c >=2G master 192.168.222.130 >=2 ...
- 使用kubeadm搭建k8s集群
1.初始化集群信息 这里我才用了两台虚拟机来搭建集群,一个master,一个node 角色 IP地址 组件 master 192.168.126.137 docker, kubectl, kubead ...
- 从centos7镜像到搭建kubernetes集群(kubeadm方式安装)
在网上看了不少关于Kubernetes的视频,虽然现在还未用上,但是也是时候总结记录一下,父亲常教我的一句话:学到手的东西总有一天会有用!我也相信在将来的某一天会用到现在所学的技术.废话不多扯了... ...
- kubeadm 搭建kubernetes集群环境
需求 kubeadm 搭建kubernetes集群环境 准备条件 三台VPS(本文使用阿里云香港 - centos7.7) 一台能SSH连接到VPS的本地电脑 (推荐连接工具xshell) 安装步骤 ...
- kubeadm搭建kubernetes集群之三:加入node节点
在上一章<kubeadm搭建kubernetes集群之二:创建master节点>的实战中,我们把kubernetes的master节点搭建好了,本章我们将加入node节点,使得整个环境可以 ...
- kubeadm搭建kubernetes集群之二:创建master节点
在上一章kubeadm搭建kubernetes集群之一:构建标准化镜像中我们用VMware安装了一个CentOS7虚拟机,并且打算用这个虚拟机的镜像文件作为后续整个kubernetes的标准化镜像,现 ...
- 使用Kubeadm创建k8s集群之部署规划(三十)
前言 上一篇我们讲述了使用Kubectl管理k8s集群,那么接下来,我们将使用kubeadm来启动k8s集群. 部署k8s集群存在一定的挑战,尤其是部署高可用的k8s集群更是颇为复杂(后续会讲).因此 ...
随机推荐
- .net core响应缓存
按照官网资料操作无效,这里使用https://github.com/speige/AspNetCore.ResponseCaching.Extensions的扩展包 安装AspNetCore.Resp ...
- WPF - Group分组对ListBox等列表样式的约束
原文:WPF - Group分组对ListBox等列表样式的约束 在做WPF主题支持时,出现一个分组引起的莫名错误,可是折腾了我一番.在没有使用样式时,列表分组很正常,使用了别人写的ListBox列表 ...
- WPF编游戏系列 之七 动画效果(2)
原文:WPF编游戏系列 之七 动画效果(2) 上一篇已经对关闭窗口图标进行了动画效果处理,本篇将对窗口界面的显示和关闭效果进行处理.由于所有的动画效果都是针对窗口界面的Canvas,所以 ...
- WPF X:Shared概述 - CSDN博客
原文:WPF X:Shared概述 - CSDN博客 一.含义 X:Shared用于指定请求资源时创建实例的两种方式. X:Shared = "true"(默认):表示所有请求都是 ...
- delphi资源文件的使用
delphi资源文件的使用 资源文件(*.res)通过编译指令 $R 关联, 譬如工程文件 Project1 中的 {$R *.res} 就是关联 Project1.res 资源文件, 我们直接写作 ...
- 理解 node.js 的事件循环
node.js 的第一个基本观点是,I/O 操作是昂贵的: 目前的编程技术最大的浪费来自等待 I/O 操作的完成.有几种方法可以解决这些对性能的影响(来自Sam Rushing): 同步:依次处理单个 ...
- Win8Metro(C#)数字图像处理--2.3图像反色
原文:Win8Metro(C#)数字图像处理--2.3图像反色 [函数名称] 图像反色函数ContraryProcess(WriteableBitmap src) [算法说明] 反色公式如下: ...
- UWP应用载入SVG图片的兼容性方案
原文 UWP应用载入SVG图片的兼容性方案 新版本<纸书科学计算器>的更新点之一,就是优化了表达式的显示方式.在旧版本中,表达式里的符号是用png图片显示的,当用户放大看的时候会发现一些锯 ...
- SQLServer 服务器架构迁移
原文:SQLServer 服务器架构迁移 最近服务器架构迁移,将原来的服务器架构迁移到新的服务器,新的服务器在硬件方面比之前更好!原来服务器使用双向同步,并且为水平划分到多个数据库服务器.迁移过程中, ...
- 可视化文件消息收发一体化Socket实现V0.1
http://blog.csdn.net/laoyang360/article/details/8681918