部署k8s集群(adm)(二)
k8s adm方式部署详解步骤
本章详解K8sadm方式部署(也可参考官方部署文档 https://docs.rancher.cn/ 目前rancher提供的解决方案rke是最快的部署方式,官网有非常详细的解释)
本章部署步骤细致,更加详细了解部署过程
本章字体颜色分类
- 棕色是输入的命令语句
- 绿色是编辑文本内容
- 红色是标红重要路径
- 黑色是旁白
废话不多说,开始***************************************************************************************************
一,先准备三台虚拟机(这里我是以我虚拟机来演示)
centos7.6 | k8s-master01 | 192.168.30.145 |
centos7.6 | k8s-node01 | 192.168.30.144 |
centos7.6 | k8s-node02 | 192.168.30.143 |
在VM创建虚拟机时,将内存给到2G以上(这里我是2G),cpu内核总数给到4以上,如图:
最后,一定要各机之间可以联通,且都能够ping通网络!!!
========================================================================================================
以上准备工作做完后,开始为部署k8s初始化这三个节点机器
每台主机修改主机名并做好映射(/etc/hosts)
#hostnamectl set-hostname k8s-master01/node01/node02
安装依赖包
#yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
设置防火墙关闭和设置空规则
#systemctl stop firewalld && systemctl disable firewalld
#yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
关闭selinux
#swapoff -a &&sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
#setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
调整内核参数
#cat > kubernetes.conf << EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52796963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
#cp kubernetes.conf /etc/sysctl.d/
调整系统时区
#timedatectl set-timezone Asia/Shanghai
#timedatectl set-local-rtc 0
#systemctl restart rsyslog
#systemctl restart crond
关闭系统不需要服务
#systemctl stop postfix && systemctl disable postfix
设置rsyslogd和systemd journald
#mkdir /var/log/journal
#mkdir /etc/systemd/journald.conf.d
#cat /etc/systemd/journald.conf.d/99-proph et.conf (内容如图:)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Journal]
Storage=persistent
Compress=yes
SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurest=1000
SystemMaxUse=10G
SystemMaxFileSize=200M
MaxRetentionSec=2week
ForwardToSyslog=no
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#systemctl restart systemd-journald(如图)
7.6升级内核(3.10内核不稳定,不利于接下了的操作,如图)
所以升级到4以上内核
#rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
#yum --enablerepo=elrepo-kernel install -y kernel-lt
#grub2-set-default 'CentOS Linux (4.4.240-1.el7.elrepo.x86_64) 7 (Core)'
切换完后,每个节点重启(reboot)一下机器,让系统自动识别并使用新内核
以上初始化就完了,总结一下,要注意各机之间的互通,和可以通网,防火墙要关闭和空规则,还有要注意要关闭swap,调整内核参数。各各节点按以上步骤做完,系统的初始化就做完了,下一步就是开始部署k8s集群(一台主,两台节点)
===========================================================================================================
开始部署k8s
部署调度(所有节点)
#modprobe br_netfilter
#cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
#chmod 755 /etc/sysconfig/modules/ && bash /etc/sysconfig/modules/ipvs.modules
#lsmod | grep -e ip_vs -e nf_conntrack_ipv4
********************每个节点安装docker前需要的软件包********************************
#yum install -y yum-utils device-mapper-persistent-data lvm2
*********************导入阿里云镜像仓库并安装docker-ce*************************
#yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#yum update -y && yum install -y docker-ce
这里安装时间比较长(大约624个包)慢慢等待即可..........
安装完后如图:
************创建docker目录***********
#mkdir /etc/docker
********************配置daemon*(如图)*************
创建docker-server目录
#mkdir -p /etc/systemd/system/docker.service.d
重启docker
#systemctl daemon-reload && systemctl restart docker && systemctl enable docker
********************************************安装kubeadm(主从配置)********************************
构建kubeadm源厂(如图):
安装
#yum -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1
#systemctl enable kubelet.service
***********************master节点先导入镜像(kubeadm-basic.images.tar.gz)*********
#tar -zxvf kubeadm-basic.images.tar.gz
编辑一个导入脚本
cat > image.sh <<EOF
#!/bin/bash
ls /root/kubeadm-basic.images > /tmp/image.txt
cd /root/kubeadm-basic.images
for i in $( cat /tmp/image.txt )
do
docker load -i $i
done
rm -rf /tmp/image.txt
EOF
*****************初始化节点*****************************
#kubeadm config print init-defaults > kubeadm-config.yaml
#vim kubeadm-config.yaml (如图)
修改完成后
初始化k8s
#kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
完成后,可以查看一些信息(#vim kubeadm-init.log)这个文件里包含很多信息和提示,下面的加入节点都需要参看这个Log日志里内容,根据里面的提示,来完成相应的操作!!
下面先简单解释一下kubeadm-init.log里的内容(如图:)
内容过多,这里的先截取重要的信息进行说明
如图上[kubelet-start] 这一行,表明了kubelet的配置写入文件"/var/lib/kubelet/config.yaml"位置
如图[certs]这一行,指明了安全认证ca证书的存放位置 Using certificateDir folder "/etc/kubernetes/pki"
文件里最后几行(如图)
这几行显示初始化成功,这里指明需要运行一下几条命令作为一个常规用户
# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config
后面几行提示要给POD部署一个网路到集群
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
****************************加入主节点和其他工作节点*********************
#vim kubeadm-init.log
加入主按照提示来做
加入其他节点提示在最后几行,复制粘贴到其他节点上运行(上一步操作)
以上部署完成后,实时查看各节点是否运行成功(在主节点上)
#kubectl get pod -n kube-system -w
添加子节点(Node)
首先要确保node上有kubelet kubeadm kubeclt 已经安装,但是不要start
此时,在主节点上,打开kubeadm-init.log文件,找到最后几行,复制粘贴到子节点,回车即可(如图)
完成后,查看节点是否加入到集群中
在主节点上查看
#kubectl get nodes
但是这里不是ready ,是因为没有配置子节点网络
**********************************部署网络flannly*******************************
#mkdir k8s-flannly
#cd k8s-flannly
#wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#kubectl create -f kube-flannel.yml
查看是否运行成功
#kubectl get pod -n kube-system
#kubectl get nodes