k8s的在线部署
k8s与docker版本对应支持列表
Kubernetes 1.15.2 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09 Kubernetes 1.15.1 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09 Kubernetes 1.15.0 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09 Kubernetes 1.14.5 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09 Kubernetes 1.14.4 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09 Kubernetes 1.14.3 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09 Kubernetes 1.14.2 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09 Kubernetes 1.14.1 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09 Kubernetes 1.14.0 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09 Kubernetes 1.13.5 -->Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06 Kubernetes 1.13.5 -->Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06 Kubernetes 1.13.4 -->Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06 Kubernetes 1.13.3 -->Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06 Kubernetes 1.13.2 -->Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06 Kubernetes 1.13.1 -->Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06 Kubernetes 1.13.0 -->Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06 Kubernetes 1.12.* -->Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06 Kubernetes 1.11.* -->Docker版本1.11.2到1.13.1、17.03 Kubernetes 1.10.* -->Docker版本1.11.2到1.13.1、17.03
k8s中文文档:
https://www.kubernetes.org.cn/docs
k8s在线部署
前提条件:
1.可用 CPU > 1 核; 内存 > 2 G;
2.所有设备安装完docker,并启动docker(全部设备),可参考我之前写的docker安装手册、
服务规划:
安装前准备(所有设备):
1.关闭防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service
2.关闭SELinux
setenforce 0 //临时关闭
vi /etc/selinux/config //永久关闭
SELINUX=enforcing改为SELINUX=disabled
3.关闭交换分区Swap
swapoff -a //临时关闭 vi /etc/fstab //永久关闭
加上#号注释掉
#UUID=364c9b7e-d20d-4cc1-9e8c-b06379a6f392 swap swap defaults 0 0
4.配置域名和主机名
#配置域名 vi /etc/hosts
192.168.36.189 master 192.168.36.190 Node1
#配置主机名 hostnamectl set-hostname master //189上执行 hostnamectl set-hostname Node1 //190上执行 #刷新一下 bash
5.设置网桥流量桥接
cat </etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF
sysctl --system
6.配置互信关系(该项不是必要的)
ssh-keygen -t rsa ssh-copy-id -i /root/.ssh/id_rsa.pub root@node1 //189上执行 ssh-copy-id -i /root/.ssh/id_rsa.pub root@master //190上执行
7.Linux内核升级(该项不是必要的)
CentOS 7.x 系统自带的3.10.x 内核存在一些 bugs,可能会导致运行的 Docker和Kubernetes不稳定
#查看内核版本
uname -r
#可以查看我之前写的
安装k8s
1.配置k8s加速镜像(所有设备)
cat << EOF | tee /etc/yum.repos.d/kubernetes.repo [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 exclude=kubelet kubeadm kubectl EOF
2.下载安装kubelet kubeadm kubectl三大组件,版本不加则认为最新版本,这里我指定了1.20.9版本(所有设备)
yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes
3.启动kubelet服务(所有设备)
systemctl enable --now kubelet
这时候的kubelet会每几秒重启一次,因为它陷入了一个等待kubeadm指令的死循环
4.下载所需镜像(所有设备)
#编写一个脚本实现
tee ./images.sh <<- ‘EOF’
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
#可以看出所要下载的镜像都是我们K8S的组件
for imageName in ${images[@]};do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imagesName
done
EOF
#赋予执行权限并执行
chmod +x ./images.sh && ./images.sh
5.k8s的初始化(master节点)
kubeadm init \ --apiserver-advertise-address=192.168.36.189[master ip] \ --control-plane-endpoint=master[master域名] \ --image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \ --kubernetes-version=v1.20.9 \ --service-cidr=10.96.0.0/16[自定义IP范围(创建SVC时分配的)] \ --pod-network-cidr=10.244.0.0/16[自定义IP范围(创建pod时分配的)]
#设备IP范围、service-cidr IP范围、pod IP范围不可重叠
#输出如下即可
To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ #网络组件下载地址 You can now join any number of machines by running the following on each node as root: kubeadm join 192.168.36.189:6443 --token 1h3pvi.vr9mpn9znd9be3ov --discovery-token-ca-cert-hash sha256:02e203632dad339cc02ca3d837813b05330244fd3bd9bbf5bf6feb4 ece9f03e6 #注意该项,该项为node节点加入k8s的命令
#然后执行提示的内容
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
6.查看k8s节点信息(master节点)
kubectl get node
#查看状态为NotReady是因为还没配置网络组件
7.部署网络组件(master节点)
curl https://docs.projectcalico.org/manifests/calico.yaml -o #修改calico.yaml文件
cat calico.yaml|grep 192.168 value: “192.168.0.0/16” #该地方需要改成我们自己设定的Pod IP网段--pod-network-cidr=10.244.0.0/16
#运行资源清单文件
kubectl apply -f calico.yaml
8.查看所有Pod的运行状态,都为running即可(master节点)
kubectl get pod -A
#此时再查看k8s的节点信息状态就会都为running了
9.node节点加入k8s(node节点)
#执行之前master节点初始化所提示的命令
kubeadm join 192.168.36.189:6443 --token 1h3pvi.vr9mpn9znd9be3ov --discovery-token-ca-cert-hash sha256:02e203632dad339cc02ca3d837813b05330244fd3bd9bbf5bf6feb4 ece9f03e6
10.查看k8s节点信息(master节点)
#此时再查看k8s的节点信息时,就出现了node节点
kubectl get node
至此我们的k8s就部署成功了!