部署环境:
1:系统配置(ALL HOST)
1.1:SELINUX配置node
首先获取selinux的状态linux
[root@localhost ~]# sestatus
能够看到当前的状态是启用的,此状态更改有两种方式:docker
1:临时关闭json
[root@localhost ~]# setenforce 0 #临时关闭
2:永久关闭(修改配置文件)centos
selinux配置文件涉及到两个,以下api
/etc/selinux/config /etc/sysconfig/selinux
用vi命令分别修改这两个配置文件的SELINUX参数为disabled缓存
SELINUX=disabled
也可使用sed命令替换服务器
sudo sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config sudo sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux
修改完成以下网络
[root@localhost ~]# vi /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX=disabled # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
配置文件修改以后须要重启系统才能生效,可是能够先使用相关指令临时关闭,无需浪费时间,至此,SELINUX配置完成app
1.2:防火墙配置
[root@localhost ~]# systemctl disable firewalld #禁止防火墙开机自启
[root@localhost ~]# systemctl stop firewalld #关闭防火墙
关闭以后,查看服务状态
[root@localhost ~]# systemctl status firewalld #查看防火墙当前运行状态
能够看到当前状态为dead #不活跃的,因此防火墙配置完成
1.3:关闭swap
sudo swapoff -a
能够看到,当前的分区挂载是存在有swap的,关闭的方法很简单,在swap这一行前面加入一个 {#} 便可,或者执行下面的指令
sudo sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab #永久
至此,swap配置完成
1.4:配置K8S虚拟网络路由转发
sudo echo -e "net.bridge-nf-call-ip6tables = 1\nnet.bridge-nf-call-iptables = 1\nnet.ipv4.ip_forward = 1" > /etc/sysctl.conf
上面的命令就是将下面三个参数写入sysctl.conf配置文件,修改以后执行生效指令
sysctl -p
结果以下,其中的报错信息暂时无论,至此,转发配置完成
2:配置阿里源,docker源,kubelet源(ALL HOST)
(众所周知,国内使用一些国外系统的时候总会遇到一些网络问题,故此咱们在安装任何服务前先配置一下软件仓库服务器)
1:备份源
rm -rf /yum_bak&&mkdir -p /yum_bak mv /etc/yum.repos.d/* /yum_bak/&&ls
2:添加阿里源,docker源,kubelet源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #添加阿里源
sudo curl -o /etc/yum.repos.d/Docker-ce.repo #添加docker-ce源https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
#临时关闭selinux##源配置完成
setenforce 0
sudo yum clean all #清除缓存
sudo yum makecache -y #建立索引
sudo yum repolist #包统计
结果以下:
能够看到,源配置已经成功
3:服务安装(all host)
3.1:安装docker
首先查看当前仓库已启用的docker-ce仓库有哪些
yum repolist all | grep docker
能够看到,当前启用的仓库为稳定版,其余类型均为禁用状态,下一步查看当前可安装的docker版本
yum list docker-ce --showduplicates|sort -r
当前源可获取的最新版本为第一个,也就是
因此,如今若是执行服务安装命令,则会安装此版本,如今咱们先安装指定版本(低版本)
sudo yum install -y docker-ce-18.06.3.ce-3.el7
而后启动看看
sudo systemctl start docker
查看docke信息
docker info
如今我又想安装最新版了,那么也简单,执行安装/更新指令便可
sudo yum update -y docker-ce
而后再次查看docker信息
sudo systemctl restart docker sudo docker info
docker安装到此结束
3.2:安装kubelet(k8s)
首先查看可安装版本
yum list kubelet --showduplicates|sort -r
此次就直接安装最新版吧
sudo yum install -y kubelet
而后继续按照其余组件(可一块儿安装)
sudo yum install -y kubeadm kubectl
至此,服务安装部分结束
4:服务配置
4.1:docker 配置(all host)
docker通常状况下只须要配置一点便可(镜像地址),命令以下:
sudo mkdir -p /etc/docker
echo -e "{\n \"registry-mirrors\": [\"https://r61ch9pn.mirror.aliyuncs.com\"]\n}" > /etc/docker/daemon.json
cat /etc/docker/daemon.json
配置以后重启docker服务,查看docker信息,查看镜像地址是否成功改变
sudo systemctl daemon-reload sudo systemctl restart docker sudo docker info
查看镜像地址(docker info反馈的下面)
至此,docker配置完成
4.2:K8S配置(ALL Host)
全部节点部分:
首先为了区分开来,先对主机进行命名及主机解析
4.2.1:主机名配置:
hostnamectl set-hostname master #其余主机分别把master换成本身的主机名便可
su
hostname
4.2.2:主机解析(全部节点一致)
先查看当前配置
cat /etc/hosts
当前配置则是默认设置,因此如今须要追加主机映射配置
vi /etc/hosts
追加如下参数
10.5.1.10 master 10.5.1.11 node1 10.5.1.12 node2 etcd
效果以下:
而后将此文件分派给其余节点:
scp /etc/hosts node1:/etc/
scp /etc/hosts node2:/etc/
至此,主机解析配置完成!
4.3:初始化k8s(Master)
获取k8s版本
ver=`kubeadm version|awk '{print $5}'|sed "s/[^0-9|\.]//g"|awk 'NR==1{print}'`
获取MASTER主机IP
ip=`cat /etc/hosts|grep master|awk '{print $1}'|awk 'NR==1{print}'`
验证信息
echo -e "k8s version is v${ver}\nmaster ip is ${ip}"
出现以上信息以后就能够执行初始化操做了:初始化master节点
kubeadm init --apiserver-advertise-address=${ip} \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v${ver} \ --service-cidr=10.1.0.0/16 \ --pod-network-cidr=10.244.0.0/16
而后遇到问题
首先解决第一个:防火墙配置
sudo systemctl stop firewalld&&sudo systemctl disable firewalld
而后到第二个:设置docker服务开机自启
sudo systemctl enable docker
第三个暂不解决,这个问题不影响主要功能
第四个:设置k8s开机自启
sudo systemctl enable docker kubelet
第五个:关闭swap
sudo swapoff -a #临时关闭
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab #永久
如今继续初始化:
此时能够看到显示镜像正在拉取中........
而后初始化成功,提示有三个关键信息,前面两个直接在master执行
按照提示执行相关指令:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
而后执行下一个指令
kubectl apply -f https://xypj-1252147235.cos.ap-guangzhou.myqcloud.com/kube-flannel.yaml
第三条执行分别在node节点执行,此指令涉及的uid属于随机性,如过时请在master节点执行下面的命令从新生成
kubeadm token create --print-join-command
至此,master节点初始化完成!
5:Node节点加入并验证
首先,在master节点执行注册命令建立,而后复制到node节点进行注册
而后把这段复制下来(随机的,不要复制个人)
kubeadm join 10.1.1.2:6443 --token 32sevm.0l5rmz0q8v8kgfzv --discovery-token-ca-cert-hash sha256:25cd4612de2097d41e0bf49bd8f97ba45971d61b50fb4a768f28d49741d52e5b
而后到node节点执行
能够看到此时有一个错误,一个意外,可是不要慌,稳住!首先解决第一个意外
能够看到,此时的驱动程序是cgroup,并非system,那么就改一下!
echo -e "{\n\t\"exec-opts\": [\"native.cgroupdriver=systemd\"],\n\t\"registry-mirrors\": [\"http://hub-mirror.c.163.com\"]\n}" > /etc/docker/daemon.json
而后验证一下
此时,文件已经修改完成,而后继续解决下一个错误
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
所有解决完成以后,只须要从新启动docker便可
已经解决两个问题了,而后从新注册试试
此时显示已经加入成功,而后去master节点查看
能够看到,node节点已经加入了,可是状态属于未准备,而且rule(角色)为空!不要慌,稳住,下面先解决最简单的角色
kubectl label nodes node node-role.kubernetes.io/node=
//nodes接着的“node”属于节点主机名;
//最后一个node属于角色属性(另外还能够设置的角色为master)
验证一下!
此时,角色已经改好了,如今看一下node节点到底咋了。
在node节点查看容器运行状况
能够看到,有一个容器是退出状态的,这时候能够判断很大程度上是这个容器致使的,那就看看这个容器到底咋了
emmmm,竟然看不到日志,而后我发现已经能够了
莫名其妙,可是能够看的出的是,以前是使用tag进行运行容器的,如今是用镜像ID,既然能够了那就先无论了