安装部署Kubernetes集群

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 本文主要分三大部分,他们分别是系统初始化、安装docker、安装Kubernetes,测试验证与删库跑路

系统初始化


请注意后面的单词all,代表所有(master、node)


Master:仅在master上


node: 仅在node上


关闭防火墙(`all`)


1## 临时关闭
2systemctl stop firewalld
3## 永久关闭
4systemctl disable firewalld
5## 验证防火墙是否关闭
6systemctl status firewalld


效果如下


640 (1).jpg


关闭selinux(`all`)


1# 临时关闭
2setenforce 0
3# 永久
4sed -i 's/enforcing/disabled/' /etc/selinux/config


关闭swap(`all`)


1# 临时
2swapoff -a 
3# 永久
4sed  -ri 's/.*swap.*/#&/' /etc/fstab
5
6# 一条命令完成所有
7systemctl stop firewalld && setenforce 0 && swapoff -a && systemctl status firewalld


设置主机名称(`all`)


1# 设置名称(k8s-m-1)忽略大写字母
2hostnamectl set-hostname master
3# 验证
4hostname


时间同步(`All`)


1yum install -y ntpdate  && ntpdate time.windows.com


在`Master`添加Hostname(`master`)


1# 设置
 2cat >> /etc/hosts << EOF
 3masterIp master
 4node1Ip node1
 5node2Ip node2
 6EOF
 7
 8# example
 9cat >> /etc/hosts << EOF
10192.168.50.182     master
11192.168.50.252   node
12EOF


验证,此时ping node, 看是否能ping通


640 (2).jpg


将桥接的IPV4 流量传递到iptables的链(`all`)


1cat > /etc/sysctl.d/k8s.conf << EOF
2net.bridge.bridge-nf-call-ip6tables = 1
3net.bridge.bridge-nf-call-ip6tables = 1
4EOF
5
6# 生效
7sysctl --system


安装Docker


删除docker(可选)


1# You can use scripts for one click installation,You may need to type enter at the end
 2# remove docker 
 3sudo yum remove docker \
 4                  docker-client \
 5                  docker-client-latest \
 6                  docker-common \
 7                  docker-latest \
 8                  docker-latest-logrotate \
 9                  docker-logrotate \
10                  docker-engine
11# Set up repository
12sudo yum install -y yum-utils
13wget https:/mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
14yum -y install docker-18.06.1.ce-3.e17


安装docker


1# Use Aliyun Docker
 2sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 3# install docker from yum
 4yum install  -y docker-ce docker-ce-cli containerd.io
 5# cat version 
 6docker --version
 7
 8# 配置镜像加速
 9sudo mkdir -p /etc/docker
10sudo tee /etc/docker/daemon.json <<-'EOF'
11{
12  "registry-mirrors": ["https://etdea28s.mirror.aliyuncs.com"]
13}
14EOF
15
16# reload
17sudo systemctl daemon-reload
18# 配置开启自启
19sudo systemctl enable docker
20# start docker
21systemctl restart docker


验证docker镜像加速


在终端上输入docker info,效果图如下


640 (3).jpg


完成~


安装Kubernetes


配置阿里镜像源(all)


1cat > /etc/yum.repos.d/kubernetes.repo <<EOF
2[kubernetes]
3name=Kubernetes
4baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
5enabled=1
6gpgcheck=0
7repo_gpgcheck=1
8gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
9EOF


安装 kubectl kubelet kubeadm(`all`)


1# install kubectl kubelet kubeadm
2yum install -y kubectl kubelet kubeadm --disableexcludes=kubernetes
3#--disableexcludes=kubernetes  禁掉除了这个之外的别的仓库
4# set boot on opening computer
5systemctl enable kubelet


kubeadm初始化(`Master`)


1kubeadm init \
 2--apiserver-advertise-address=masterIp   \
 3--image-repository registry.aliyuncs.com/google_containers  \
 4--service-cidr=10.10.0.0/16 \
 5--pod-network-cidr=10.122.0.0/16
 6
 7# eg  
 8kubeadm init \
 9--apiserver-advertise-address=192.168.50.182   \
10--image-repository registry.aliyuncs.com/google_containers  \
11--service-cidr=10.96.0.0/12 \
12--pod-network-cidr=10.244.0.0/16


如果没有Error,即kubeadm开始初始化成功


640 (4).jpg


等上几分钟,初始化成功,如下图


640 (5).jpg


开启集群(master)


1mkdir -p $HOME/.kube
2sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
3sudo chown $(id -u):$(id -g) $HOME/.kube/config
4
5# 验证
6kubectl get node
7# 正常打印出信息即,成功


节点加入集群(node)


1# 例如
2kubeadm join 192.168.50.182:6443 --token 7t70cl.hr22v89g7wkqojdf \
3    --discovery-token-ca-cert-hash sha256:d0541c10506744981838a7d4ce504eb69d28fdcfc8e1261373505c42047be33f


这个是初始化完成后,系统给的。请以自己输出为准


1# 默认token24hour后过期,获取新token命令如下:
2kubeadm token create --print-join-command


部署CNI网络组件


1# 由于是国外的源,国内无法访问。我们需要添加镜像,若存在,则忽略
2echo "199.232.28.133 raw.githubusercontent.com" >> /etc/hosts
3
4# 部署CNI网络组件
5kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml


1# 开启IPVS,修改ConfigMap的kube-system/kube-proxy中的模式为ipvs
2kubectl edit cm kube-proxy -n kube-system 
3# 将空的data -> ipvs -> mode中替换如下
4mode: "ipvs"


640 (6).jpg


此时已经全部就绪了,如下


640 (7).jpg


验证测试


1# kubectl create deployment NAME --image=image -- [COMMAND] [args...] [options]
2# 简单部署nginx
3kubectl create deployment nginx --image=nginx
4# 对外暴露端口
5kubectl expose deployment nginx --port=80 --type=NodePort
6# 查看状态
7kubectl get pod,svc
8# 查看命名空间
9kubectl get all -n kube-system


部署成功示意图


640 (8).jpg


向外暴露随机端口


640 (9).jpg


访问集群中任意一个ip


640 (10).jpg


完成~


补充,删除部署的服务


1kubectl get deployment 
2# 我们只需要删除对应的deploy 即可
3kubectl delete deployment nginx


640 (11).jpg


删除成功后,已经找不到nginx的影子,完成


640 (12).jpg


总结


本节我们对使用kubeadm工具快速搭建搭建了Kubernetes的集群,系统初始化,记得关闭防火墙、分区等哦。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
23天前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
24天前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
|
1月前
|
Kubernetes Cloud Native 云计算
云原生之旅:Kubernetes 集群的搭建与实践
【8月更文挑战第67天】在云原生技术日益成为IT行业焦点的今天,掌握Kubernetes已成为每个软件工程师必备的技能。本文将通过浅显易懂的语言和实际代码示例,引导你从零开始搭建一个Kubernetes集群,并探索其核心概念。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
122 17
|
1月前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
474 1
|
1月前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
105 1
|
1月前
|
负载均衡 应用服务中间件 nginx
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
51 1
|
1月前
|
Kubernetes Ubuntu Linux
Centos7 搭建 kubernetes集群
本文介绍了如何搭建一个三节点的Kubernetes集群,包括一个主节点和两个工作节点。各节点运行CentOS 7系统,最低配置为2核CPU、2GB内存和15GB硬盘。详细步骤包括环境配置、安装Docker、关闭防火墙和SELinux、禁用交换分区、安装kubeadm、kubelet、kubectl,以及初始化Kubernetes集群和安装网络插件Calico或Flannel。
141 0
|
1月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
73 0
|
1月前
|
弹性计算 Kubernetes Linux
如何使用minikube搭建k8s集群
如何使用minikube搭建k8s集群
|
1月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--k8s集群使用容器镜像仓库Harbor
本文介绍了在CentOS 7.9环境下部署Harbor容器镜像仓库,并将其集成到Kubernetes集群的过程。环境中包含一台Master节点和两台Node节点,均已部署好K8s集群。首先详细讲述了在Harbor节点上安装Docker和docker-compose,接着通过下载Harbor离线安装包并配置相关参数完成Harbor的部署。随后介绍了如何通过secret和serviceaccount两种方式让Kubernetes集群使用Harbor作为镜像仓库,包括创建secret、配置节点、上传镜像以及创建Pod等步骤。最后验证了Pod能否成功从Harbor拉取镜像运行。
109 0