ECS部署k8s

简介: ECS部署k8s

环境要求 CentOS 7.8

安装docker及kubelet

# 阿里云 docker hub 镜像exportREGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com
# 在 master 节点和 worker 节点都要执行# 安装 docker# 参考文档如下# https://docs.docker.com/install/linux/docker-ce/centos/ # https://docs.docker.com/install/linux/linux-postinstall/# 卸载旧版本yum remove -y docker \
docker-client \
docker-client-latest \
docker-ce-cli \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
# 设置 yum repositoryyum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装并启动 dockeryum install -y docker-ce-19.03.11 docker-ce-cli-19.03.11 containerd.io-1.2.13
mkdir /etc/docker || truecat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["${REGISTRY_MIRROR}"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"  },
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"  ]
}
EOF
mkdir-p /etc/systemd/system/docker.service.d
# Restart Dockersystemctl daemon-reload
systemctl enable docker
systemctl restart docker
# 安装 nfs-utils# 必须先安装 nfs-utils 才能挂载 nfs 网络存储yum install -y nfs-utils
yum install -ywget# 关闭 防火墙systemctl stop firewalld
systemctl disable firewalld
# 关闭 SeLinuxsetenforce 0sed-i"s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
# 关闭 swapswapoff -ayes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab
# 修改 /etc/sysctl.conf# 如果有配置,则修改sed-i"s#^net.ipv4.ip_forward.*#net.ipv4.ip_forward=1#g"  /etc/sysctl.conf
sed-i"s#^net.bridge.bridge-nf-call-ip6tables.*#net.bridge.bridge-nf-call-ip6tables=1#g"  /etc/sysctl.conf
sed-i"s#^net.bridge.bridge-nf-call-iptables.*#net.bridge.bridge-nf-call-iptables=1#g"  /etc/sysctl.conf
sed-i"s#^net.ipv6.conf.all.disable_ipv6.*#net.ipv6.conf.all.disable_ipv6=1#g"  /etc/sysctl.conf
sed-i"s#^net.ipv6.conf.default.disable_ipv6.*#net.ipv6.conf.default.disable_ipv6=1#g"  /etc/sysctl.conf
sed-i"s#^net.ipv6.conf.lo.disable_ipv6.*#net.ipv6.conf.lo.disable_ipv6=1#g"  /etc/sysctl.conf
sed-i"s#^net.ipv6.conf.all.forwarding.*#net.ipv6.conf.all.forwarding=1#g"  /etc/sysctl.conf
# 可能没有,追加echo"net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo"net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
echo"net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
echo"net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo"net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
echo"net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf
echo"net.ipv6.conf.all.forwarding = 1"  >> /etc/sysctl.conf
# 执行命令以应用sysctl -p# 配置K8S的yum源cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
# 卸载旧版本yum remove -y kubelet kubeadm kubectl
# 安装kubelet、kubeadm、kubectl# 将 ${1} 替换为 kubernetes 版本号,例如 1.19.0yum install -y kubelet-${1} kubeadm-${1} kubectl-${1}# 重启 docker,并启动 kubeletsystemctl daemon-reload
systemctl restart docker
systemctl enable kubelet && systemctl start kubelet
docker version

初始化 master 节点

# 只在 master 节点执行# 替换 x.x.x.x 为 master 节点的内网IP# export 命令只在当前 shell 会话中有效,开启新的 shell 窗口后,如果要继续安装过程,请重新执行此处的 export 命令exportMASTER_IP=x.x.x.x
# 替换 apiserver.demo 为 您想要的 dnsNameexportAPISERVER_NAME=apiserver.demo
# Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中exportPOD_SUBNET=10.100.0.1/16
echo"${MASTER_IP}${APISERVER_NAME}" >> /etc/hosts
#!/bin/bash# 只在 master 节点执行# 脚本出错时终止执行set-eif [ ${#POD_SUBNET}-eq0 ] || [ ${#APISERVER_NAME}-eq0 ]; thenecho-e"\033[31;1m请确保您已经设置了环境变量 POD_SUBNET 和 APISERVER_NAME \033[0m"echo前POD_SUBNET=$POD_SUBNETecho前APISERVER_NAME=$APISERVER_NAMEexit1fi# 查看完整配置选项 https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2rm-f ./kubeadm-config.yaml
cat <<EOF > ./kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v${1}imageRepository: registry.aliyuncs.com/k8sxio
controlPlaneEndpoint: "${APISERVER_NAME}:6443"networking:
  serviceSubnet: "10.96.0.0/16"  podSubnet: "${POD_SUBNET}"  dnsDomain: "cluster.local"EOF
# kubeadm init# 根据您服务器网速的情况,您需要等候 3 - 10 分钟kubeadm config images pull --config=kubeadm-config.yaml
kubeadm init --config=kubeadm-config.yaml --upload-certs# 配置 kubectlrm-rf /root/.kube/
mkdir /root/.kube/
cp-i /etc/kubernetes/admin.conf /root/.kube/config
# 安装 calico 网络插件# 参考文档 https://docs.projectcalico.org/v3.13/getting-started/kubernetes/self-managed-onprem/onpremisesecho"安装calico-3.13.1"rm-f calico-3.13.1.yaml
wget https://kuboard.cn/install-script/calico/calico-3.13.1.yaml
kubectl apply -f calico-3.13.1.yaml

检查 master 初始化结果

# 只在 master 节点执行# 执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态watch kubectl get pod -n kube-system -o wide
# 查看 master 节点初始化结果kubectl get nodes -o wide


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
3月前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
843 5
|
3月前
|
Java Linux Apache
在CentOS服务器上编译并部署NiFi源码
部署Apache NiFi在CentOS上是一个涉及细节的过程,需要注意Java环境、源码编译、配置调整等多个方面。遵循上述步骤,可以在CentOS服务器上成功部署和配置Apache NiFi,从而高效地处理和分发数据。
206 17
|
4月前
|
弹性计算 安全 Linux
使用阿里云服务器安装Z-Blog博客网站流程,新手一键部署教程
本教程教你如何在阿里云99元服务器上,通过宝塔Linux面板一键部署Z-Blog博客。基于CentOS 7.9系统,从远程连接、安装宝塔面板、开放端口到部署Z-Blog全流程详解,操作简单,新手也能轻松搭建个人博客网站。
553 13
|
4月前
|
弹性计算 Devops Shell
用阿里云 DevOps Flow 实现 ECS 部署自动化:从准备到落地的完整指南
阿里云 DevOps Flow 是一款助力开发者实现自动化部署的高效工具,支持代码流水线构建、测试与部署至ECS实例,显著提升交付效率与稳定性。本文详解如何通过 Flow 自动部署 Bash 脚本至 ECS,涵盖环境准备、流水线搭建、源码接入、部署流程设计及结果验证,助你快速上手云上自动化运维。
379 0
监控 安全 Linux
206 0
|
5月前
|
监控 Java Linux
Apache NiFi项目的编译与部署于CentOS服务器
总而言之,Apache NiFi的编译和部署虽然涉及多个步骤,但这些操作步骤简明扼要,即使是不太熟悉Java或Maven的用户也能跟随指南完成。通过遵循上述步骤,您将能够在CentOS服务器上成功部署Apache NiFi,为您的数据流处理任务建立一个功能强大的平台。
383 16
|
5月前
|
资源调度 负载均衡 JavaScript
使用PM2工具部署Vue.js应用于服务器
以上步骤完成之后,你就成功利⽤ PM⼆工具将 Vuejs 应⽰程序部署至服 务 器,并且配合反向代理实现了高效稳定访问及负载均衡功能。
227 0
|
5月前
|
运维 数据可视化 数据库
一小时搞定服务器软件部署:资深工程师实测方案
本文分享了一位运维工程师在短时间内将30个不同软件部署到新服务器上的实战经验。面对全新 Rocky Linux 系统,传统手工部署方式效率低下且容易出错。作者尝试多种自动化方案后,最终选择使用自动化部署工具,通过其内置的 Docker Compose 模板和可视化界面,实现快速、批量部署,大幅提升效率,30个应用仅用约1小时完成,显著节省时间和人力成本。

推荐镜像

更多