k8s集群部署方案_k8s集群部署
![a3b238a531cec0c022944abf429419e3.png](https://img-blog.csdnimg.cn/img_convert/a3b238a531cec0c022944abf429419e3.png)
部署软件和配置
所有k8s集群节点都需要安装,默认yum源是谷歌也可以使用阿里云yum
kubeadm:初始化集群,管理集群等;版本1.17.2
kubelet:用于接收api-server指令,对pod生命周期进行管理;版本:1.17.2
kubectl:集群命令管理工具;版本:1.17.2
docker: 版本:18.06.3
谷歌YUM
[kubernetes
阿里云YUM
[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
![35400136cb4fddaca00d398ddf69732f.png](https://img-blog.csdnimg.cn/img_convert/35400136cb4fddaca00d398ddf69732f.png)
验证yum是否可用
![46b8e7ab34b34d1b2333670fe8352ae0.png](https://img-blog.csdnimg.cn/img_convert/46b8e7ab34b34d1b2333670fe8352ae0.png)
把文件复制到worker节点
![91a0abe014ecfd46840f02b2b2ce3d76.png](https://img-blog.csdnimg.cn/img_convert/91a0abe014ecfd46840f02b2b2ce3d76.png)
安装指定版本kubeadm kubelet kubectl
yum list kubeadm.x86_64 --showduplicates | sort -r
yum -y install --setopt=obsoletes=0 kubeadm-1.17.2-0 kubelet-1.17.2-0 kubectl-1.17.2-0
![94c1437cd1942fed26a0dc6c3dacba11.png](https://img-blog.csdnimg.cn/img_convert/94c1437cd1942fed26a0dc6c3dacba11.png)
设置kubelet
为了实现docker使用的cgroupdriver与kubelet使用的cgroup的一致性,建议修改如下配置
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
设置为开机自启动即可,由于没有生成配置文件,集群初始化后自动启动
systemctl enable kubelet
![9be5d7ff9fb5f5135f11a168effb10a5.png](https://img-blog.csdnimg.cn/img_convert/9be5d7ff9fb5f5135f11a168effb10a5.png)
设置开机自启动
![fdad3d52919b15c3badfe49f57261a73.png](https://img-blog.csdnimg.cn/img_convert/fdad3d52919b15c3badfe49f57261a73.png)
k8s集群容器镜像
由于使用kubeadm部署集群,集群所有核心组件均以Pod运行,需要为主机准备镜像,不同角色主机准备不同镜像
master主机镜像
# 查看集群使用的容器镜像
kubeadm config images list
# 列出镜像列表到文件中,便于下载使用
kubeadm config images list >> image.list
# 查看已列出镜像文件列表
cat image.list
# 编写镜像下载脚本
cat image.pull
#! /bin/bash
img_list='
k8s.gcr.io/kube-apiserver:v1.17.2
k8s.gcr.io/kube-controller-manager:v1.17.2
k8s.gcr.io/kube-scheduler:v1.17.2
k8s.gcr.io/kube-proxy:v1.17.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.5
'
for img in $img_list
do
docker pull $img
done
# 执行镜像下载脚本
sh image.pull
# 查看已下载镜像
docker images
![b19ca1502a3150934a948e9cd6b758d9.png](https://img-blog.csdnimg.cn/img_convert/b19ca1502a3150934a948e9cd6b758d9.png)
![803c8ae292f82c7dde528e5eac2d4b55.png](https://img-blog.csdnimg.cn/img_convert/803c8ae292f82c7dde528e5eac2d4b55.png)
执行脚本下载软件,需要使用科学的上网方法,否则下载失败会一直超时
![8824b9b9e08fcb856250ca65dd3a331f.png](https://img-blog.csdnimg.cn/img_convert/8824b9b9e08fcb856250ca65dd3a331f.png)
worker主机镜像
在master节点对镜像打包传给worker节点就可以了
# 保存镜像为tar
docker save -o kube-proxy.tar
k8s.gcr.io/kube-proxy:v1.17.2
docker save -o pause.tar
复制tar到worker节点
scp kube-proxy.tar pause.tar worker1:/root
scp kube-proxy.tar pause.tar worker2:/root
导入以后要使用docker load -i kube-proxy.tar加载镜像
集群初始化
在master节点
kubeadm init --kubernetes-version=v1.17.2 --pod-network-cidr=172.16.0.0/16 --apiserver-advertise
-address=192.168.183.131
![ea9c9ac3ebcbbf092272945389de2c9f.png](https://img-blog.csdnimg.cn/img_convert/ea9c9ac3ebcbbf092272945389de2c9f.png)