k8s安装

 Kubernetes需要容器运行时(Container Runtime Interface,CRI)的 支持,目前官方支持的容器运行时包括:Docker、Containerd、CRI-O和 frakti。

安装条件:

本节以Docker作为容器 运行环境,推荐版本为Docker CE 18.09。

宿主机操作系统以CentOS Linux 7为例,使用Systemd系统完成对 Kubernetes服务的配置。

1、而Kubernetes的Master与工作Node之间会有大量的网络通 信,安全的做法是在防火墙上配置各组件需要相互通信的端口号,具体 要配置的端口号详见2.8节各服务启动参数中监听的端口号。在安全的 内部网络环境中可以关闭防火墙服务

# systemctl disable firewalld
# systemctl stop firewalld
 
2、另外,建议在主机上禁用SELinux,让容器可以读取主机文件系 统:
# setenforce  0
或修改系统文件/etc/sysconfig/selinux,将SELINUX=enforcing修改 成SELINUX=disabled,然后重启Linux。
 
1、开始安装:
安装kubeadm和相关工具(需要提前安装好docker
 
首先配置yum源,官方yum源的地址为 https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64。如果 无法访问官方yum源的地址,则也可以使用国内的一个yum源,地址为 http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/, yum源的配置文件/ etc/yum.repos.d/kubernetes.repo的内容如下:

 

 然后运行yum install命令安装并启动kubeadm和相关工具:

#yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

#systemctl enable kubelet && systemctl start kubelet

 

2、kubeadm config

kubeadm将配置文件以ConfigMap的形式保存到集群之中, 便于后续的查询和升级工作。kubeadm config子命令提供了对这一组功 能的支持:

◎ kubeadm config upload from-file:由配置文件上传到集群中生 成ConfigMap。

◎ kubeadm config upload from-flags:由配置参数生成 ConfigMap。

◎ kubeadm config view:查看当前集群中的配置值。

◎ kubeadm config print init-defaults:输出kubeadm init默认参数文 件的内容。

◎ kubeadm config print join-defaults:输出kubeadm join默认参数 文件的内容。

◎ kubeadm config migrate:在新旧版本之间进行配置转换。

◎ kubeadm config images list:列出所需的镜像列表。

◎ kubeadm config images pull:拉取镜像到本地。

 

例如,执行kubeadm config print init-defaults,可以取得默认的初始 化参数文件:

 

 

3、下载Kubernetes的相关镜像

为了从国内的镜像托管站点获得镜像加速支持,建议修改Docker的 配置文件,增加Registry Mirror参数,将镜像配置写入配置参数中,例 如echo '{"registry-mirrors":["https://registry.docker-cn.com"]}' > /etc/docker/daemon.json,然后重启Docker服务。

 

 在镜像下载完成之后,就可以进行安装了

 

4、运行kubeadm init命令安装Master

至此,准备工作已就绪,执行kubeadm init命令即可一键安装 Kubernetes的Master。

在开始之前需要注意:kubeadm的安装过程不涉及网络插件 (CNI)的初始化,因此kubeadm初步安装完成的集群不具备网络功 能,任何Pod包括自带的CoreDNS都无法正常工作。而网络插件的安装 往往对kubeadm init命令的参数有一定的要求。例如,安装Calico插件时 需要指定--pod-network-cidr=192.168.0.0/16,详情可参考 https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#podnetwork。

 

接下来使用kubeadm init命令,使用前面创建的配置文件进行集群 控制面的初始化

kubectl  init --config=init-config.yaml

 

 初始化成功后,复制这一段token

按照提示执行下面的命令,复制配置文件到普通用户的home目录 下:

 

 这样就在Master上安装了Kubernetes,但在集群内还是没有可用的 工作Node,并缺乏对容器网络的配置。

 

 5、安装Node,加入集群

node节点也需要安装docker

对于新节点的添加,系统准备和Kubernetes yum源的配置过程是一 致的,在Node主机上执行下面的安装过程。 (1)安装kubeadm和相关工具:

yum install -y kubelet kubeadm  --disableexcludes=kubernetes

systemctl enable kubelet && systemctl start kubelet

 

为kubeadm命令生成配置文件。创建文件join-config.yaml,内 容如下:(手动创建一个如下文件)

 

 其中,apiServerEndpoint的值来自Master服务器的地址,token和 tlsBootstrapToken的值就来自于使用kubeadm init安装Master的最后一行 提示信息。

 

执行kubeadm join命令,将本Node加入集群:

 

 

 6、安装网络插件

执行kubectl get nodes命令,会发现Kubernetes提示Master为 NotReady状态,这是因为还没有安装CNI网络插件:

 

 下面根据kubeadm的提示安装CNI网络插件。对于CNI网络插件,可 以有许多选择,请参考https://kubernetes.io/docs/setup/independent/createcluster-kubeadm/#pod-network的说明。

 

 7、验证Kubernetes集群是否安装完成。

执行下面的命令,验证Kubernetes集群的相关Pod是否都正常创建并 运行:

 

 如果发现有状态错误的Pod,则可以执行kubectl --namespace=kubesystem describe pod<pod_name>来查看错误原因,常见的错误原因是镜 像没有下载完成。

至此,通过kubeadm工具就实现了Kubernetes集群的快速搭建。

如 果安装失败,则可以执行kubeadm reset命令将主机恢复原状,重新执行 kubeadm init命令,再次进行安装。

 

posted on 2020-10-22 15:19  yanmay  阅读(325)  评论(0编辑  收藏  举报

导航