实验IP 192.168.168.1
实验IP 192.168.168.2
实验操作系统CentOS 7
系统配置
一、系统配置(所有节点)
1、修改hosts
vi /etc/hosts
192.168.168.1 master
192.168.168.2 work
2、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
3、禁用SElinux
setenforce 0 临时关闭
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux 永久关闭
4、关闭swap交换分区
swapoff -a 临时关闭
sed -i 's/.*swap.*/#&/g' /etc/fstab 永久关闭
5、检查是否安装过docke和k8s
rpm -qa |grep docker
rpm -qa |grep kuber
如有安装,就先卸载
二、安装docker(所有节点)
1、添加docker的yum源
用yum自动添加yum源
yum -y install yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2、配置k8s源
vim /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
3、安装docker和k8s
建立缓存
yum clean all & yum makecache fast
yum list docker-ce.x86_64 --showduplicates | sort -r 查看docker版本
安装docker
yum install docker-ce
安装K8S
yum install kubectl-1.18.5 kubeadm-1.18.5 kubelet-1.18.5 --nogpgcheck -y
4、配置网络转发
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
sysctl --system
使配置生效
5、docker基础配置
配置docker的日志,镜像的存储目录等
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "50m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
],
"registry-mirrors": ["https://nwyi5x9z.mirror.aliyuncs.com"],
"data-root": "/data/docker"
}
6、配置开机启动
systemctl enable docker
systemctl start docker
systemctl enable kubelet
7、加载镜像
列出需要事先加载的镜像
国内的源目前只支持1.18.3最高版本,1.18.5需要到https://hub.docker.com/_/docker下载
kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.18.5
k8s.gcr.io/kube-controller-manager:v1.18.5
k8s.gcr.io/kube-scheduler:v1.18.5
k8s.gcr.io/kube-proxy:v1.18.5
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.7
导入需要的镜像
docker load < kube-apiserver
docker load < kube-controller-manager
docker load < kube-scheduler
docker load < kube-proxy
docker load < pause
docker load < etcd
docker load < coredns
8、初始化K8S集群
vim /root/kubeadm-init.yaml主节点添加初始化k8s文件
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
kubernetesVersion: v1.18.5
controlPlaneEndpoint: 192.168.168.1:6443
networking:
podSubnet: 10.244.0.0/16
apiServer:
certSANs:
- 192.168.168.1
- 192.168.168.2
初始化master节点
kubeadm init --config kubeadm-init.yaml
或者执行初始化命令
kubeadm init --kubernetes-version=v1.18.5 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.168.1 --ignore-preflight-errors=Swap
安装末尾会提示如下信息
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
下载flannel网络插件控制文件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
创建网络pod
kubectl apply -f kube-flannel.yml
从节点执行加入主节点 注:(此信息是主节点初始化后生成的)
kubeadm join 192.168.168.1:6443 --token lauwug.qaehfyx2pde0yces \
--discovery-token-ca-cert-hash sha256:ed017dfd525a76d314f3f25fc868bb02b789990dff01382a7eaab10b66ec298d
9、修改k8s工作目录(可选)
部署完成后修改/etc/sysconfig/kubelet
中新增KUBELET_EXTRA_ARGS=--root-dir=/home/kubelet
修改kubelet的工作目录默认为/var/lib/kubelet
复制/var/lib/kubelet 到 /home/kubelet
然后重启kubelet
kubeadm安装完成后,添加work节点的命令忘了或者失效可以用以下命令重新生成
kubeadm token create --print-join-command --ttl 0