K8S集群安装
#配置docker的yum镜像仓库#安装指定版本docker...#设置开机自启#换阿里云镜像加速一下从阿里云拷贝出来的(扫码登陆阿里云->控制台->容器镜像服务)EOF。
·
安装Docker
sudo yum remove docker* sudo yum install -yum-utils #配置docker的yum镜像仓库 sudo yum-config-manager \ --add-rep \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #安装指定版本docker... sudo yum install -y docker-ce-19.03.9 docker-ce-cli-19.03.9 containerd.io-1.4.6 #设置开机自启 systemctl enable docker --now #换阿里云镜像加速一下从阿里云拷贝出来的(扫码登陆阿里云->控制台->容器镜像服务) sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://hglujpd5.mirror.aliyuncs.com"], "exec-opts":["native.cgroupdriver=systemd"] } EOF sudo systemctl daemon-reload sudo systemctl enable --now docker
安装Kubernetes集群
1. 基本环境 CentOS7.9
#分别修改每个机器的hostname,并且能保证内外相互ping通 hostnamectl set-hostname k8s-master hostnamectl set-hostname k8s-worker1 hostnamectl set-hostname k8s-worker2 #分别对3个节点配置本地域名解析,这是能根据域名ping通的关键 vi /etc/host 172.31.0.2 k8s-master 172.31.0.3 k8s-worker1 172.31.0.4 k8s-worker2 #将SELinux设置为permissive模式(相当禁用) sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config #关闭swap 检查:free -m Swap:列表要全部为0 swapoff -a sed -ri 's/.*swap.*/#&/' /etc/fstab #允许iptables检查桥接流量 cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfiler EOF sudo modprobe overlay sudo modprobe br_netfilter cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF #保存设置 sudo sysctl --system
2. 安装kubelet、kubeadm、kubectl
#配置k8s镜像地址 cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https:https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF #---------------------上下两部分,分开执行----------------- #安装kubelet(K8S组件下载)、kubeadm(K8S安装工具)、kubectl(程序员命令控制) sudo yum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15 --disableexcludes=kubernetes # 在每个节点执行,意思告知每个节点的主节点是会谁(很重要!很重要!很重要!这个跟kubeadm init --control-plane-endpoint=k8s-master 要保持一致 # 其实这句我在上面的本地域名解析配置过来了 (可以执行或者不执行) echo "172.31.0.2 k8s-master >> /etc/hosts #设置开机自启 sudo systemctl enable --now kubelet #检查是否正常启动kubelet,注意kubelet如果是 “闪开、闪停” 说明正常 (它必须准备好,要不然kubeadm 执行初始化时,无法下载对映的K8S组件) systemctl status kubelet
3.初始化master节点
# 1.查看kubeadm所需镜像,一般出现版本不兼容报错时,对比检查用的 (可忽略) kubeadm config images list # 根据 config images list 下载所需要的组件镜像 #docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.20.15 #docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.20.15 #docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.20.15 #docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.20.15 #docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 #docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0 #docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:v1.7.0 # 2.因为第四步会有这那问题,所以镜像先下载到阿里云镜像仓库,版本参考第一步(很关键,要不然K8S安装没法继续进行了)在master节点执行下面脚本进行下载 # 至于其它节点只需要kube-proxy,可以将脚本其它组件镜像删除后执行,或者不删除直接执行 # registry.cn-hangzhou.aliyuncs.com/ldj_containers 阿里云镜像地址,其中ldj_containers是我自定义的目录 # 网上的registry.cn-hangzhou.aliyuncs.com/google_containers中的google_containers 我试过一直超时,本人怀疑压根没有K8S相关组件的镜像 sudo tee ./images.sh <<-'EOF' #!/bin/bash images=( kube-apiserver:v1.20.15 kube-controller-manager:v1.20.15 kube-scheduler:v1.20.15 kube-proxy:v1.20.15 pause:3.2 etcd:3.4.13-0 coredns:v1.7.0 ) for imageName in ${images[@]}; do docker pull registry.cn-hangzhou.aliyuncs.com/ldj_containers/$imageName done EOF # 3.ls上面脚本执行会生成一个images.sh 文件,下面这句授权执行下载 chmod +x ./images.sh && ./images.sh # 4.这里很容易出错,版本不匹配、自己master节点没写对、镜像找不到又会使用国外默认镜像导致超时等,所以要留意错误日志或者警告日志,根据日志一一解决 # 其它ip地址需要保证网络范围不重叠,简单点ip开头不一样能保证不重叠,只修改apiserver-advertise-address和control-plane-endpoint就行 # 如果修改其它ip,那么后面下载的calico.yaml也要修改成一致的 kubeadm init \ --apiserver-advertise-address=172.31.0.2 \ --control-plane-endpoint=k8s-master --images-repository registry.cn-hangzhou.aliyuncs.com/ldj_containers \ --kubernetes-version v1.20.15 \ --service-cidr=10.96.0.0/16 \ --pod-network-cidr=192.168.0.0/16
控制台打印出控制面板初始化成功后,复制关键信息并记录到记事本,安装提示执行
#在主节点执行 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 在主节点执行 # 下载k8s的资源文件 (网络插件) curl https://docs.projectcalico.org/manifests/calico.yaml -O #下载网络插件 kubectl apply -f calico.yaml
#子节点加入主节点 (在子节点执行) kubeadm join k8s-master:6443 --token xxxxxxxxxxxxxxxx --discovery-token-ca-cert-hash yyyyyyyyyyyyyyyy #如果令牌过期重新生成新的令牌 kubectl token create --print-joint-command
更多推荐
已为社区贡献4条内容
所有评论(0)