一、安装准备(所有机器)
1、环境准备
机器环境
节点CPU核数必须是 :>= 2核 ,否则k8s无法启动 内存大于2G 节点之间网络互通
准备3台虚拟机环境
k8s-master01: 此机器用来安装k8s-master的操作环境
k8s-node01: 此机器用来安装k8s node节点的环境
k8s-node02: 此机器用来安装k8s node节点的环境
2、依赖环境
2.1、给每一台机器设置主机名
hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-node01
hostnamectl set-hostname k8s-node02
查看主机名
hostname
2.2、配置IP host映射关系
vi /etc/hosts
192.168.66.10 k8s-master01
192.168.66.11 k8s-node01
192.168.66.12 k8s-node02
3、时间同步确认
设置系统时区为中国/上海
timedatectl set-timezone Asia/Shanghai
4、安装依赖环境
yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git iproute lrzsz bash-completion tree bridge-utils unzip bind-utils gcc
5、防火墙配置
安装iptables,启动iptables,设置开机自启,清空iptables规则,保存当前规则到默认规则
5.1、关闭防火墙并设置开机禁用防火墙
systemctl stop firewalld && systemctl disable firewalld
5.2、安装并置空iptables
yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
5.3、关闭selinux
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
5.4、关闭系统不需要的服务
systemctl stop postfix && systemctl disable postfix
6、禁用交换分区
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
7、系统优化参数
modprobe br_netfilter
7.1、配置参数输出到一个文件中
cat > kubernetes.conf <
7.2、将优化内核文件拷贝到/etc/sysctl.d/文件夹下,这样优化文件开机的时候能够被调用
cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
7.3手动刷新,让优化文件立即生效
sysctl -p /etc/sysctl.d/kubernetes.conf
7.4、系统文件数调整
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf
8、kube-proxy设置
8.1、开启 ipvs 前置条件
配置
cat > /etc/sysconfig/modules/ipvs.modules <
8.2、使用lsmod命令查看这些文件是否被引导
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash/etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
8.3、查看kube-proxy的代理设置
kubectl logs kube-proxy-58j2k -n kube-system
8.4、修改代理设置,删除并重启kube-proxy
kubectl get pod -n kube-system | grep kube-proxy |awk '{system("kubectl delete pod "$1" -n kube-system")}'
systemctl daemon-reload
systemctl restart kube-proxy
systemctl status kube-proxy
8.5、重新查看kube-proxy的代理设置
kubectl logs kube-proxy-58j2k -n kube-system
二、Docker-安装
安装之前如果安装过docker需要先删除执行命令(第一个命令执行报错执行第二个即可解决),删除以后8中的步骤不需要在执行
systemctl stop docker
systemctl stop docker.socket
安装k8s,所有节点都需要安装docker
1、安装依赖环境
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2、添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、查找docker软件版本
yum list docker-ce.x86_64 --showduplicates | sort -r
4、指定版本docker-ce 稳定版本
yum install -y docker-ce-18.09.9-3.el7
5、设置docker daemon.json文件,源地址,存储目录,日志规则,存储方式
mkdir /etc/docker
cat > /etc/docker/daemon.json <
6、启动docker服务并设置docker为开机自启动
sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker
7、查看启动状态
systemctl status docker
8、移除之前的Docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
docker-engine
三、Kubernetes-安装
1、所有节点
安装kubernetes的时候,需要安装kubelet, kubeadm等包,但k8s官网给的yum源是 packages.cloud.google.com,国内访问不了,此时我们可以使用阿里云的yum仓库镜像。
镜像地址
阿里云镜像网站:https://developer.aliyun.com/mirror/
kubernetes镜像:https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
1.1、 下载阿里云的k8s源
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-
x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
1.2、查看仓库软件支持版本
yum list kubelet --showduplicates | sort -r
1.3、指定版本进行部署,(所有节点全部进行此操作)
yum -y install kubelet-1.18.6 kubeadm-1.18.6 kubectl-1.18.6
1.4、将kubelet设置为开机自启动
systemctl enable kubelet && systemctl start kubelet
2、主节点
2.1、初始化Master 在主节点进行初始化
kubeadm init --apiserver-advertise-address=192.168.56.100 --kubernetes-version=v1.18.6 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
2.2、初始化后执行提示的命令 创建目录,保存连接配置缓存,认证文件
mkdir -p $HOME/.kube
2.3、拷贝集群管理配置文件
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
2.4、授权给配置文件
sudo chown $(id -u):$(id -g) $HOME/.kube/config
2.5、初始化完成查看节点的状态,为notready,这时状态是应为网络插件为安装
kubectl get nodes
3、flannel插件
3.1、进行安装
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
wget命令连接超时,可以设置跳过证书验证
wget --no-check-certificate https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
3.2、查看节点的状态由notready变为Ready
kubectl get nodes
3.3、查看系统名称空间下的k8s核心组件运行状态
kubectl get pod -n kube-system
4、从节点Node
从节点使用命令加入master主节点 master主节点初始化完成后,会生成一个kubeadm join命令用于从节点进行join加入
4.1、在两个从节点执行Master节点初始化完成后生成的命令
kubeadm join 192.168.56.100:6443 --token 8atp64.3wbtv64icc7e6k36 \
--discovery-token-ca-cert-hash
sha256:3ce2e67176d6169e47a2041e177fb7eb616d9b9389a43fc7d5061464a97ee1eb
4.2、从节点初始化成功后的状态
4.3、查看集群运行状态,到此安装完成
kubectl get nodes -o wide
token丢失了,可以使用如下命令来重新生成:
kubeadm token create --print-join-command