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

之前结合实际经验写过一篇k8s集群安装的文章,但是针对的是老版本的安装方法,k8s的组件如今全部采用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":["<ip>: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运行完成后,会提示其他节点加入集群的方法,截图样例如下(由于安装时忘记截图,在网上找了一个截图的样例),如果想要其他节点加入集群根据提示操作即可

fb4384886de6fa2e56df12c0e1d17390.png

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,在集群的所有节点上安装nfs服务。并设置开机启动

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的集群的安装已经完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值