当前位置: 首页 > >

k8s 启动命令cmd_K8S集群的安装(更新)

发布时间:

之前结合实际经验写过一篇k8s集群安装的文章,但是针对的是*姹镜陌沧胺椒ǎ琸8s的组件如今全部采用pod的方式运行,所以又重新安装了本地的集群,现将集群的安装过程整理记录如下。


集群规划如下



另外还有一台节点v04作为docker的私库,和集群的外挂磁盘所在节点。操作系统使用centos7。


首先集群的master节点要求必须2核以上,所以如果是使用vmware或者virtualbox,需要注意cpu的核数。


安装前的准备


1. 关闭防火墙


2. 关闭selinux


3. 关闭swap,注释掉 fstab中的 /dev/mapper/centos-swap



swapoff -a
vi /etc/fstab
#/dev/mapper/centos-swap swap swap defaults 0 0


4. 修改sysctl的配置, 将net.bridge.bridge-nf-call-iptables设置为1



vi /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1


安装docker


确保所有节点都要安装docker,因为现在k8s的所有组件都是基于pod的,所以即便是master节点,虽然它作为集群的管理节点不会运行我们自己的pod,但是k8s自己本身的组件,例如etcd,apiserver等都是运行在pod中,所以所有节点都需要安装docker。


首先获得docker的yum源,由于连接外网很不方便,而且速度慢,所以我们使用阿里云的yum源,包括后面下载docker镜像,使用的也是阿里源的源。然后安装docker-ce,并设置成开机启动。



wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum install docker-ce
systemctl enable docker
systemctl start docker


配置自己的私有仓库(如果不适用私库,可以略过此步)


由于docker私库要求使用https,为了方便使用,我们使用insecure-registries。


编辑 /etc/docker/daemon.json, 加入下列内容



{ "insecure-registries":[":5000"] }

其中ip为私库ip,5000端口是默认的私库端口,如果是自定义的,改成相应的端口。


安装 kubelet、kubeadm 和 kubectl


首先设置yum源,添加阿里云为yum源



[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

然后安装kubectl,kubeadm,kubelet,并设置kubelet的开机启动



yum install kubectl kubeadm kubelet
systemctl enable kubelet.service


kubectl是k8s的命令行工具


kubelet是用于启动pod和容器等


kubeadm用于启动集群,初始化集群


以上步骤需要在所有节点上执行,下面开始分别安装master和node节点。


安装master节点


初始化master节点


在master节点上执行以下命令进行初始化



kubeadm init --pod-network-cidr=10.244.0.0/16

--pod-network-cidr=10.244.0.0/16 是 k8s 的网络插件所需要用到的配置信息,用来给 node 分配子网段。我们使用的的网络插件是 flannel。


执行初始化之前会先做一些检查例如cpu核数等等。如果出现error,要先解决掉error然后重新运行init命令,检查通过后,会开始运行kubeadm的初始化操作,会从官网下载很多image,由于国内网络连接官网很慢,很可能会下载失败,所以我们可以使用阿里云的image,先下载下来,然后再给下载下来的镜像重新打上官网的标签,这样再执行初始化的时候就可以使用下载下来的本地镜像。运行以下命令来下载镜像



docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.0 k8s.gcr.io/kube-apiserver:v1.19.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.9-1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.7.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.0 k8s.gcr.io/kube-controller-manager:v1.19.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.0 k8s.gcr.io/kube-scheduler:v1.19.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.0 k8s.gcr.io/kube-proxy:v1.19.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.9-1 k8s.gcr.io/etcd:3.4.9-1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.7.0 k8s.gcr.io/coredns:1.7.0


kubeadm运行完成后,会提示其他节点加入集群的方法,截图样例如下(由于安装时忘记截图,在网上找了一个截图的样例),如果想要其他节点加入集群根据提示操作即可






master节点的配置


k8s不推荐使用root用户操作,所以创建一个有root权限的用户,然后赋予root权限



添加用户k8s并设置密码
useradd k8s passwd k8s
使用户具有root权限
chmod 777 /etc/sudoers
vi /etc/sudoers
chmod 440 /etc/sudoers


切换至k8s账户,执行以下命令,即安装完kubeadm后提示的步骤



mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config


运行以下命令安装pod网络(安装flannel),使pod可以相互通信



kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

至此,master节点安装完成


安装Node节点


在node节点上执行以下命令,即kubeadm安装完提示的命令,加入集群



kubeadm join 10.0.2.5:6443 --token vc1pde.0f1zq9w3osvx8on7 --discovery-token-ca-cert-hash sha256:b4b4c0661363ff0cb95eb4d68bfce605da64a563a3e834827784c08fbdc7f8ba

安装需要的镜像


在每一个 node 节点上我们还需要下载 http://quay.io/coreos/flannel:v0.11.0-amd64、http://k8s.gcr.io/pause 和 http://k8s.gcr.io/kube-proxy 这三个镜像,第一个可以直接下载,后两个仍然采用先从国内源下载然后打标签的方式



docker pull quay.io/coreos/flannel:v0.12.0-amd64
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.0 k8s.gcr.io/kube-proxy:v1.19.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2


可以在master节点上运行命令 kubectl get nodes查看集群节点的状态。


至此node节点也安装完成。


其他设置


这里主要是设置nfs,我们使用nfs来做volume的映射。找一台vm做nfs的server,在集群的所有节点*沧皀fs服务。并设置开机启动



yum install rpcbind nfs-utils
systemctl enable rpcbind.service
service rpcbind start


在server节点做如下配置



# cat /etc/exports
/data/k8s/ 192.168.56.0/24(sync,rw,no_root_squash)


/data/k8s/ 是挂载的目录


192.168.56.0/24 是允许挂载的客户端ip的所在网段


sync 同时将数据写入到内存与硬盘中,保证不丢失数据


rw 读写


no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员


在客户端使用showmount -e 192.168.56.5查看是否可以正常挂载,显示如下证明可以正常挂载



# showmount -e 192.168.56.5
Export list for 192.168.56.5:
/data/k8s 192.168.56.0/24


至此k8s的集群的安装已经完成。



友情链接: