- 传统方式,使用二进制。
- 优点:能够让我们更清楚k8s的组件关系,可扩展性强,可定制化
- 缺点:不利于新手部署
- 使用kubeadm安装
- 优点:简单,高效
- 缺点:所有的事情都被kudeadm工具帮我们部署了,可扩展性差,不可定制化
这里介绍使用kubeadm安装的步骤:
1. master:安装kubelet,kubeadm,docker,kubeclt客户端,然后初始化,生成令牌,供node端加入2. node01:安装kubelet,kubeadm,docker后,join 直接加入集群即可3. node02:安装kubelet,kubeadm,docker后,join 直接加入集群即可
PS:在CentOS中安装K8S只能在Centos7的系统上进行安装,原因是Linux 内核的版本必须是 3.10 以上
master、node机器初始化
改IP,改hostname,改hosts,关机
##### -----------------master:-------------------echo "master" > /etc/hostnamecat <<EOF >> /etc/hosts192.168.225.151 master192.168.225.152 node01192.168.225.153 node02EOFsed -i s#IPADDR=192.168.3.206#IPADDR=192.168.3.207#g /etc/sysconfig/network-scripts/ifcfg-ens33sed -i s/UUID/#UUID/g /etc/sysconfig/network-scripts/ifcfg-ens33reboot##### -----------------node01:-------------------echo "node01" > /etc/hostnamecat <<EOF >> /etc/hosts192.168.225.151 master192.168.225.152 node01192.168.225.153 node02EOFsed -i s#IPADDR=192.168.3.206#IPADDR=192.168.3.208#g /etc/sysconfig/network-scripts/ifcfg-ens33sed -i s/UUID/#UUID/g /etc/sysconfig/network-scripts/ifcfg-ens33reboot##### -----------------node02:-------------------echo "node02" > /etc/hostnamecat <<EOF >> /etc/hosts192.168.225.151 master192.168.225.152 node01192.168.225.153 node02EOFsed -i s#IPADDR=192.168.3.206#IPADDR=192.168.3.209#g /etc/sysconfig/network-scripts/ifcfg-ens33sed -i s/UUID/#UUID/g /etc/sysconfig/network-scripts/ifcfg-ens33reboot
master节点
# 下载yum源cd /etc/yum.repos.d/wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum -y install docker-ce-18.06.1.ce-3.el7systemctl enable docker&& systemctl start docker# kubernetes的yum源cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF# kubelet是k8s的管理工具# kubeadm是k8s的安装工具# kubectl是k8s的客户端# ----V1.13.3版本----yum install -y kubelet-1.13.3 kubeadm-1.13.3 kubectl-1.13.3 kubernetes-cni-0.6.0# ----V1.15版本------yum install -y kubelet kubeadm kubectl# 忽略swap报错cat <<EOF > /etc/sysconfig/kubeletKUBELET_EXTRA_ARGS="--fail-swap-on=false"EOF# 更加转发等功能cat <<EOF > /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1EOF# 让配置生效sysctl --system# 开机自启动kubeletsystemctl enable kubelet# -----------------1.13.3版本----------------kubeadm init \--apiserver-advertise-address=192.168.225.151 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.13.3 \--service-cidr=10.1.0.0/16 \--pod-network-cidr=10.2.0.0/16 \--service-dns-domain=cluster.local \--ignore-preflight-errors=Swap \--ignore-preflight-errors=NumCPU# ----------------1.15.0版本---------------kubeadm init \--apiserver-advertise-address=192.168.3.207 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.15.0 \--service-cidr=10.1.0.0/16 \--pod-network-cidr=10.2.0.0/16 \--service-dns-domain=cluster.local \--ignore-preflight-errors=Swap \--ignore-preflight-errors=NumCPU# ----------------------参数说明---------------------------apiserver-advertise-address:指定用 Master 的哪个IP地址与 Cluster的其他节点通信。--service-cidr:指定Service网络的范围,即负载均衡VIP使用的IP地址段。--pod-network-cidr:指定Pod网络的范围,即Pod的IP地址段。--image-repository:Kubenetes默认Registries地址是k8s.gcr.io,在国内并不能访问 gcr.io,在1.13版本中我们可以增加-image-repository参数,默认值是k8s.gcr.io,将其指定为阿里云镜像地址:registry.aliyuncs.com/google_containers。--kubernetes-version=v1.13.3:指定要安装的版本号。--ignore-preflight-errors=:忽略运行时的错误,例如上面目前存在[ERROR NumCPU]和[ERROR Swap],忽略这两个报错就是增加--ignore-preflight-errors=NumCPU 和--ignore-preflight-errors=Swap的配置即可------------------------------kubeadm init干了什么?--------------------[init]:指定版本进行初始化操作[preflight] :初始化前的检查和下载所需要的Docker镜像文件[kubelet-start] :生成kubelet的配置文件”/var/lib/kubelet/config.yaml”,没有这个文件kubelet无法启动,所以初始化之前的kubelet实际上启动失败。[certificates]:生成Kubernetes使用的证书,存放在/etc/kubernetes/pki目录中。[kubeconfig] :生成 KubeConfig 文件,存放在/etc/kubernetes目录中,组件之间通信需要使用对应文件。[control-plane]:使用/etc/kubernetes/manifest目录下的YAML文件,安装 Master 组件。[etcd]:使用/etc/kubernetes/manifest/etcd.yaml安装Etcd服务。[wait-control-plane]:等待control-plan部署的Master组件启动。[apiclient]:检查Master组件服务状态。[uploadconfig]:更新配置[kubelet]:使用configMap配置kubelet。[patchnode]:更新CNI信息到Node上,通过注释的方式记录。[mark-control-plane]:为当前节点打标签,打了角色Master,和不可调度标签,这样默认就不会使用Master节点来运行Pod。[bootstrap-token]:生成token记录下来,后边使用kubeadm join往集群中添加节点时会用到[addons]:安装附加组件CoreDNS和kube-proxy# 系统提示步骤mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/config# 打通网络cd ~kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml[github地址](https://github.com/coreos/flannel)# 创建密钥kubeadm token create --print-join-command
node节点
# 安装docker的yum源cd /etc/yum.repos.d/wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum -y install docker-ce-18.06.1.ce-3.el7systemctl enable docker&& systemctl start docker# 写入k8s的yum源cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF# 下载k8s的组件----V1.13.3版本----yum install -y kubelet-1.13.3 kubeadm-1.13.3 kubectl-1.13.3 kubernetes-cni-0.6.0----V1.15版本------yum install -y kubelet kubeadm kubectl# 忽略swap错误cat <<EOF > /etc/sysconfig/kubeletKUBELET_EXTRA_ARGS="--fail-swap-on=false"EOF# 开启系统转发cat <<EOF > /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1EOF# 让配置生效sysctl --system# 设置服务开机自启动systemctl enable kubelet# 加入集群(令牌过期作废)kubeadm join 192.168.3.207:6443 --token a4645k.pq7e5e34y9sl9g53 --discovery-token-ca-cert-hash sha256:abd02c82cdefbcc2d17a2f53ec9b376e31d123ef33af880608d97f64b12a65f5 --ignore-preflight-errors=Swap
浙公网安备 33010602011771号