k8s集群部署方案_k8s集群部署

部署软件和配置
所有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

验证yum是否可用

把文件复制到worker节点

安装指定版本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

设置kubelet
为了实现docker使用的cgroupdriver与kubelet使用的cgroup的一致性,建议修改如下配置
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
设置为开机自启动即可,由于没有生成配置文件,集群初始化后自动启动
systemctl enable kubelet

设置开机自启动

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


执行脚本下载软件,需要使用科学的上网方法,否则下载失败会一直超时

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
