本系列文章:
1、centos7 通过kubeadm安装Kubernetes 1.14.3 集群
2、centos7 基于Kubernetes 安装dashboard
目录
8.2.可以查看所有仓库中所有docker版本,并选择特定版本安装
准备条件:
准备3台centos7的服务器,其内核版本高于 3.10即最低不能低于3.10(不然docker装不了)
1.修改hostname
分别更改Hostname为 master、node1、node2
分别修改每台服务器的hostname:
#vim /etc/hostname
master
node1
node2
将下面的添加到每个服务器中
# vim /etc/hosts
193.xxx.xx.167 master
193.xxx.xx.58 node1
193.xxx.xx.59 node2
#roboot重启机器生效
2.关闭CentOS7自带的防火墙服务
# service firewalld stop (临时关闭)
# systemctl disable firewalld (设为开机,不启动)
#systemctl status firewalld 查看防火墙的状态
#systemctl status iptables 查看iptables状态
3.关闭seLinux
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可生效
查看SELinux状态:
# sestatus
4.禁用交换分区(临时)
查看交换分区状态,如果swap数值全部为0,则表示已经禁用。
# free -h
如果没有为0就执行下面的命令:
# swapoff -a
5.设置代理(临时)
当你的服务器连不了外界的网时,才需要设置。不然不需要!
# export http_proxy=http://xx.xxx.129.21:8080
# export https_proxy=http://xx.xxx.129.21:8080
当服务器重启时,需要重新执行
6.检查服务器内核版本
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的
CentOS 版本是否支持 Docker。
通过 uname -r 命令查看你当前的内核版本
# uname –r
7.更新yum
系统初始化安装(所有主机)-选择【最小化安装】,然后yum update,升级到最新版本
# yum -y install epel-release
# yum update
-----------------------------------------------
报错:Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again
解决方案:
打开/etc/yum.repos.d/epel.repo,将
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
修改为
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
再清理源,重新安装
- # yum clean all
- # yum update
----------------------------------------------------
8.安装docker
每台服务器都需要装!!!
- 卸载旧版本(如果安装过旧版本的话)
# yum remove docker docker-common docker-selinux docker-engine
- 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
8.1.添加yum源
# sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
注:docker的官方镜像由于在国外有些rpm下载不了,所以用阿里的镜像。
另外,安装之前执行yum clean all命令,以防缓存中版本冲突。
8.2.可以查看所有仓库中所有docker版本,并选择特定版本安装
# yum list docker-ce --showduplicates | sort -r
8.3.安装docker
# sudo yum install docker-ce docker-ce-cli containerd.io #默认安装最新版
或者要选择安装某个版本:
# sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
8.4.启动并加入开机启动
# sudo systemctl start docker
# sudo systemctl enable docker
8.5.验证安装是否成功
(有client和service两部分表示docker安装启动都成功了)
# docker version
表明安装成功!
由于默认镜像仓库在国外下载很慢,经常会断
通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
#sudo mkdir -p /etc/docker
#sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://qqnn8qm9.mirror.aliyuncs.com"]
}
EOF
重启docker使其生效
#sudo systemctl daemon-reload
#sudo systemctl restart docker
8.6.设置上网代理
如果服务器需要代理才能联网,docker也要配置相应的代理。没有的话,请忽略
# mkdir -p /etc/systemd/system/docker.service.d
#vim /etc/systemd/system/docker.service.d/http-proxy.conf
写入以下内容:
[Service]
Environment="HTTP_PROXY=http://xxx.xxx.129.xx:8080" "NO_PROXY=localhost,127.0.0.1"
$ vim /etc/systemd/system/docker.service.d/https-proxy.conf
写入以下内容:
[Service]
Environment="HTTPS_PROXY=http://xx.xxx.xxx.xx:8080" "NO_PROXY=localhost,127.0.0.1"
重启使生效:
# systemctl daemon-reload
# systemctl restart docker
# systemctl show --property=Environment docker
8.7.测试docker是否能够正常使用
docker run hello-world
表明成功
9.时间校对(三台机器都做时间校对)
依次执行即可
#yum install ntp
#systemctl start ntpd
#systemctl enable ntpd
#ntpdate ntp1.aliyun.com
#hwclock -w
10.安装k8s组件
每台服务器都需要进行以下操作
10.1.配置国内的repo源:
#cat >> /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
10.2.修改网络配置:
##修改内核两个参数(这两个是参数是防止应用部署在centos系统情况下由于iptables被绕过而导致的路由错误)
简单的说就是使流过网桥的流量也进入iptables/netfilter框架中:
# cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
修改完成后执行sysctl --system使其生效
。
确认并保证输出的都是1
# cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
1
# cat /proc/sys/net/bridge/bridge-nf-call-iptables
1
10.3.安装k8s包:
# yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
10.4.完成后启动kubelet
服务:
# systemctl enable kubelet.service
# systemctl start kubelet.service
查看状态
# systemctl status kubelet.service
K8s未初始化,kubelet是启动不起来
11. 初始化master节点
11.1.查看kubectl的版本信息:
$ kubectl version
11.2.初始化集群:
对master服务器进行操作:
法1:
#kubeadm init --kubernetes-version=1.14.3 --apiserver-advertise-address=本机IP地址(即master节点的地址) --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
1.14.3是你kubectl的版本
-image-repository 指定镜像仓库地址,默认的仓库在国外,可能导致镜像下载出问题
记录好这段,以后会经常用到:
kubeadm join xxx.xxx.xx.167:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:321b8c219272c09c228762f650b9e2a79e7987 107a90729223e7e1cxxxd043b2
法2:
如果网络ok,使用法1的方法安装不会存在问题。但是国内可能一些镜像无法下载,可以使用阿里云的docker hub镜像进行安装。
首先输出kubeadm默认配置:
#kubeadm config print init-defaults > kubeadm-init.yaml
将其中:
imageRepository修改成 registry.cnhangzhou.aliyuncs.com/google_containers
serviceSubnet部分设置成10.244.0.0/16,也就是--pod-network-cidr=10.244.0.0/16参数。
advertiseAddress: 1.2.3.4
改成193.xxx.xx.167(及本机地址)
然后先进行镜像下载:
#kubeadm config images pull --config kubeadm-init.yaml
最后再使用修改后的配置进行初始化:
#kubeadm init --config kubeadm-init.yaml
即可
下面是一些常用的命令:
- 重新初始化 #kubeadm reset
- 检测组件运行是否正常 # kubectl get cs
- 查看所有节点(集群状态检测)
(注:在master节点上进行如下操作):
[hall@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master NotReady master 41m v1.13.0
复制代码这里master的状态为NotReady是因为还没有进行pod network安装。下面接着讲。
12.安装 flannel网络
下载yml文件:
# curl -O https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
12.1.然后创建flannel:
# kubectl create -f kube-flannel.yml
完成后可以检查:
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 102d v1.13.0
复制代码
这时候节点的状态应该是Ready。说明master节点状态正常。
同时也可以查看flannel的pod:
$ kubectl get pods -n kube-system | grep flannel
或者还可以这样获取更详细pod的运行情况:
#kubectl get pod -o wide -n kube-system
13.添加工作节点
确保1-10步骤全部完成。
由于之前服务器node1已经配置过代理,需要将master节点的代理取消
#export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com ,193.xxx.xx.167"
如果没有配代理,请忽略上面
然后执行master节点kubeadm init完成后得到的join命令:
#kubeadm join 193.xx.xx.167:6443 --token rrf32a.9xg5ze3ju19n03ez \
--discovery-token-ca-cert-hash sha256:b11ac7755be28472425bdedd5aa550751a4592d4583b94e823d7f8d214e2bedd
去master节点执行kubectl get nodes:
发现已经该节点已经注册上来了,时间比较长大概需要10分钟左右,其status才变成Ready
本文就先讲得这了~~
下节将dashboard的安装及使用
参考:
kubeadm安装kubernetes 1.14.0 | jkzhao's blog
使用kubeadm reset 重新初始化过程 - -✌+王庭威+✌-
https://note.youdao.com/ynoteshare1/index.html?id=1197d46dd344f8aaaed66c1914a094b0&type=note