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

二 安装***客户端

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.配置***客户端

新建配置文件

 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=***
[Service]
TimeoutStartSec=0 ExecStart=/usr/bin/sslocal -c /etc/shadowsocks/shadowsocks.json [Install] WantedBy=multi-user.target 

启动***客户端

systemctl enable shadowsocks.service
systemctl start shadowsocks.service
systemctl status shadowsocks.service 

验证***客户端是否正常运行

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

猜你喜欢

转载自www.cnblogs.com/jiyang2018/p/11051831.html