当前位置:首页 > Web开发 > 正文

进一步完善我们的ansible部署脚本

2024-03-31 Web开发

kubeadm是Kubernetes官方供给的用于快速安置Kubernetes集群的工具,陪同Kubernetes每个版本的颁布城市同步更新,kubeadm会对集群配置方面的一些实践做调解,通过尝试kubeadm可以学习到Kubernetes官方在集群配置上一些新的最佳实践。

在Kubernetes的文档Creating a single master cluster with kubeadm中已经给出了目前kubeadm的主要特性已经处于beta状态了,在2018年将进入GA状态,说明kubeadm离可以在出产环境中使用的距离越来越近了。

固然我们线上不变运行的Kubernetes集群是使用ansible以二进制形式的部署的高可用集群,这里体验Kubernetes 1.12中的kubeadm是为了跟从官方对集群初始化和配置方面的最佳实践,进一步完善我们的ansible部署脚本。

系统环境筹备 环境 ip hostname OS k8s-role
192.168.2.45   k8s-master-45   centos 7   master  
192.168.2.46   k8s-work-46   centos7   work  
192.168.2.47   k8s-work-47   centos7   work  
系统配置

hosts

cat /etc/hosts 192.168.2.45 k8s-master-45 192.168.2.46 k8s-work-46 192.168.2.47 k8s-work-47

禁用selinux,firewalld

# 禁用selinux vi /etc/selinux/config SELINUX=disabled # 禁用firewalld systemctl stop firewalld systemctl disable firewalld

内核配置
配置网桥参数,使得流量不会绕过iptable

# vim /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 # modprobe br_netfilter # sysctl -p /etc/sysctl.d/k8s.conf

禁用swap

swapoff -a # 姑且 # 永久,注释swap相关 vim /etc/fstab #/dev/mapper/centos-swap swap swap defaults 0 0 mount -a reboot

安置docker-ce

需要注意的是,Kubernetes 1.12已经针对Docker的1.11.1, 1.12.1, 1.13.1, 17.03, 17.06, 17.09, 18.06等版本做了验证,最低撑持的Docker版本是1.11.1,最高撑持是18.06,Docker最新版本已经是18.09了,故我们安置时需要指定版本为18.06.1-ce

yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install docker-ce-18.06.1.ce-3.el7 -y systemctl start docker systemctl enable docker

调解时区
时区不同错误,时间差较大,证书验证会欠亨过

yum install ntpdate -y ntpdate time.windows.com ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 使用kubeadm部署Kubernetes 安置kubeadm和kubelet

每个节点进行安置
yum源

# google cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF #aliyun cat <<EOF > /etc/yum.repos.d/kubernetes.repo [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 EOF

安置

yum install -y kubelet kubeadm kubectl ipvsadm 使用kubeadm init初始化集群

设置kubelet开机启动

systemctl enable kubelet.service

kubeadm配置文件

在kubeadm v1.11+版本中,增加了一个kubeadm config print-default命令,可以让我们便利的将kubeadm的默认配置输出至文件中,改削本钱身想要的

# cat kubeadm.yaml apiVersion: kubeadm.k8s.io/v1alpha2 kind: MasterConfiguration controllerManagerExtraArgs: horizontal-pod-autoscaler-use-rest-clients: "true" horizontal-pod-autoscaler-sync-period: "10s" node-monitor-grace-period: "10s" apiServerExtraArgs: runtime-config: "api/all=true" kubernetesVersion: "stable-1.12" # 指定版本v1.12.2 imageRepository: registry.aliyuncs.com/google_containers # 指定阿里云的镜像库

镜像获取
这种部署方法最蛋疼的处所就是拉取镜像了,主要是下面几个镜像,,也可以从国内pull到本地从头打tag

kubeadm config images pull --config kubeadm.yaml registry.aliyuncs.com/google_containers/kube-apiserver:v1.12.2 registry.aliyuncs.com/google_containers/kube-controller-manager:v1.12.2 registry.aliyuncs.com/google_containers/kube-scheduler:v1.12.2 registry.aliyuncs.com/google_containers/kube-proxy:v1.12.2 registry.aliyuncs.com/google_containers/pause:3.1 registry.aliyuncs.com/google_containers/etcd:3.2.24 registry.aliyuncs.com/google_containers/coredns:1.2.2

初始化集群

kubeadm init --config kubeadm.yaml

从头初始化可以执行

kubeadm reset

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32411.html