kubernetes(k8s)环境搭建及部署

kubernetes(k8s)环境搭建及部署



前言

Kubernetes单词来自于希腊语,含义是领航员,生产环境级别的容器编排技术,可实现容器的自动部署扩容以及管理。Kubernetes也称为K8S,其中8代表中间8个字符,是Google在2014年的开源的一个容器编排引擎技术,用于自动化容器化应用程序的部署、规划、扩展和管理,他将组成的应用程序容器分组为逻辑单元,以便于管理和发现,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,很多细节都不需要运维人员去进行复杂的手工配置和处理。
官网:https://kubernetes.io/
代码:https://github.com/kubernets/kubernets
Kubernetes是采用Go语言开发的,Go语言是谷歌2009发布的一款开源编程语音。

一、Kubernetes整体架构

在这里插入图片描述
Master
k8s集群控制节点,对集群进行调度管理,接受集群外用户去集群操作请求。
Master Node由API Server、Scheduler、ClusterState Store(ETCD数据库) 和Controller ManagerServer组成;
Nodes
集群工作节点,运行用户业务应用容器;
Nodes节点也叫WorkerNode,包含kubelet、kube proxy 和Pod(Container Runtime);

二、Kubernetes环境搭建方式

(1)minkube可以本地运行Kubernets的工具,minikube可以在个人计算机运行一个单节点Kubernetes集群,以便您可以试用Kubernetes或日常开发工作(使用不多)
https://kubernetes.io/docs/tutorials/hello-minikube/
(2)kind
Kind和minikub类似的工具,让你在本地计算机上运行Kubernetes,此工具需要安装并配置Docker
https://kind.sigs.k8s.io/
(3) kubeadm
Kubeadm是一个K8S的部署工具,提供kubeadm init和kubeadm join 两个操作命令,可以快速部署一个Kubernetes集群。
官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm
(4)从github下载发行版的二进制包,手动部署安装每个组件,组成Kubernetes集群,步骤比较繁琐,但是能让你对各个组件有更清晰的认识。
(5)通过yum安装Kubernetes的每个组件,组成Kubernetes集群,不过yum源里面的k8s版本比较老,所以这种方式使用比较少。
(6)第三方工具
部分大神封装了一些工具,利用这些工具进行k8s的安装
(7)花钱购买
直接购买类似阿里云这样的公有云平台k8s,一键敲定。

三、Kubeadm部署Kubernetes

3.1环境的要求

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具,这个工具能通过两条指令完成一个kubernetes集群部署
1、创建一个Master节点
kubeadm init
2、将Node节点加入到Master集群中:
kubeadm join <Master 节点的IP和端口>
部署环境要求
一台或多台机器,操作系统Centos7.x-86_x64
硬件配置:内存2G或2G+,CPU2核或CPU2核+
集群内各个机器之间能互相通信
集群内各个机器可以访问外网,需要拉取镜像
禁止swap分区
环境不满足就会报错

3.2配置环境的相关策略

关闭防火墙

# systemctl stop firewalld.service
# systemctl disable firewalld.service

关闭selinux

# sed -i 's/enforceing/disabled/' /etc/selinux/config#永久
# setenforce 0 #临时

关闭swap(k8s禁止虚拟内存以提高性能)

# swapoff -a  #临时
# sed -ri 's/.*swap.*/#&/' /etc/fstab #永久

在master添加hosts

cat >> /etc/hosts << EOF
192.168.10.30  k8s-master
192.168.10.31  k8s-node1
EOF

设置网桥参数

cat >> /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

时间同步
yum -y install ntpdate
由于操作系统默认安装是英文的,所以时间同步是美国的纽约时间,所以需要修改。
mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate ntp1.aliyun.com

四、Kubernetes具体操作步骤

所有服务器节点安装Docker/kubeadm/kubelet
Kubernetes默认容器运行环境是Docker,因此首先需要安装Docker

4.1安装Docker

更新docker的yum源

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-20.10.12
systemctl start docker
vim /etc/docker/daemon.json
{ 
"registry-mirrors":["https://registry.docker-cn.com"] 
}
systemctl enable docker

4.2搭建kubeadm、kubelet、kubectl

添加k8s的阿里云YUN源

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

开始安装

yum -y install kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4
systemctl enable kubelet

查看是否安装好

yum list installed | grep kubelet
yum list installed | grep kubeadm
yum list installed | grep kubectl

工具介绍
kubelet:运行在cluster所有节点上,负责启动pod和容器
kubeadm:由于初始化cluster的一个工具
kubectl:kubectl是kubenetes命令行工具,通过kubectl可以部署和管理应用,查看各种资源,创建,删除和更新组件。

4.3Master节点

kubeadm init --apiserver-advertise-address=192.168.10.30 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version  v1.19.4 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.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

4.4将node节点加入到Kubernetes master中,在node上执行

向集群添加新节点,执行的命令是kubeadm init最后输出的kubeadm join

kubeadm join 192.168.10.30:6443 --token vf8ckd.k76hannwrja98fze \
    --discovery-token-ca-cert-hash sha256:ab6d6e80d199d4628ddd6daa186901f21c06cb691a7e7ffcde6e0ea890077f66

4.5部署网络插件

wget https://raw.githubbusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubectl apply -f kube-flannel.yml

[root@k8s-master ~]# kubectl apply -f kube-flannel.yml
podsecuritypolicy.policy/psp.flannel.unprivileged created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created

kubectl get nodes

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES    AGE   VERSION
k8s-master   Ready    master   50m   v1.19.4
k8s-node1    Ready    <none>   29m   v1.19.4

由于node节点的标签为,所以需要我们人为将标签打上去

[root@k8s-master ~]# kubectl label node k8s-node1 node-role.kubernetes.io/worker=worker
node/k8s-node1 labeled
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES    AGE   VERSION
k8s-master   Ready    master   58m   v1.19.4
k8s-node1    Ready    worker   36m   v1.19.4

到此为止k8s环境搭建完毕了。

五、测试部署nginx

[root@k8s-master ~]# kubectl create deployment nginx --image=nginx
deployment.apps/nginx created
[root@k8s-master ~]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-6799fc88d8-dst82   1/1     Running   0          61s
[root@k8s-master ~]# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
[root@k8s-master ~]# kubectl get service
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        3h44m
nginx        NodePort    10.105.171.223   <none>        80:32161/TCP   22s

通过网页访问
http://192.168.10.31:32161/
http://192.168.10.30:32161/
最后成功

  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: DockerKubernetes是目前非常流行的容器化技术,可以帮助开发人员更好的构建、管理和部署应用程序。下面将介绍如何在一台主机上搭建DockerKubernetes集群环境,并部署分布式应用程序。 第一步是安装DockerKubernetes,安装方式根据不同的操作系统会略有不同。安装完成后,需要对Docker进行一些配置,让它可以将Docker镜像推送和拉取到Kubernetes集群中。这一步可以通过配置Docker的daemon.json文件来完成。 接下来,需要搭建Kubernetes集群。首先需要安装etcd,它是Kubernetes的数据存储后端。然后安装kubectl命令行工具,用于管理Kubernetes集群。 部署Kubernetes集群后,需要将应用程序打包成Docker镜像,并推送到Docker镜像仓库中。然后,通过编写Kubernetes的YAML文件来定义应用程序的部署方式、服务、副本等信息。最后,使用kubectl apply命令来将YAML文件应用到Kubernetes集群中,实现应用程序的部署和运行。 如果需要对应用程序进行扩容,可以通过kubectl scale命令来水平扩展副本数。如果需要对应用程序进行升级,可以通过修改YAML文件并使用kubectl apply命令来实现。 总之,通过搭建DockerKubernetes集群环境,我们可以更轻松、高效的构建、管理和部署分布式应用程序。 ### 回答2: DockerKubernetes 都是一些颇为流行的容器技术。Docker 以其轻量级和易于部署的特点受到许多人的青睐,而 Kubernetes 则是以其在容器编排和自动化部署上的能力而闻名。本文将介绍如何搭建 DockerKubernetes 集群环境,并演示如何在分布式应用程序上部署这些技术。 Docker 集群环境: 要搭建 Docker 集群环境,我们需要一个主节点和多个工作节点。可以在机器上安装 DockerDocker Compose。使用 Docker Compose,我们可以轻松创建、启动和停止应用程序,同时便于管理容器。 当我们有多个 Docker 容器的时候,可以将它们放在不同的宿主机上,从而构建一个 Docker 集群。整个集群可以共享一个网络,这样我们就可以在不同的容器间通信。集群中每个节点都可以运行一个容器。这使得我们可以轻易地扩大我们的应用程序,并将它们部署到不同的机器上。 Kubernetes 集群环境: 要搭建 Kubernetes 集群环境,我们首先需要一个主节点和多个工作节点。要安装 Kubernetes 集群,我们可以使用 kubeadm 安装工具。Kubeadm 是一个命令行工具,它可以管理 Kubernetes 集群中的所有节点和服务。 在 Kubernetes 中,我们定义一组容器和服务,并将其称为一个应用程序,这个应用程序可以轻松地在 Kubernetes 集群中部署Kubernetes 集群还提供了各种管理工具,可以监视应用程序的运行状态并处理故障。 分布式应用部署: 在分布式应用中,DockerKubernetes 都能够提供强大的支持。使用 Docker,我们可以打包我们的应用程序并将其部署到多个容器中。这样我们就可以轻松地扩大我们的应用程序,并将它们部署到不同的机器上。 使用 Kubernetes,我们可以轻松部署和管理分布式应用程序,同时可以自动地监视、管理和扩展我们的容器。我们可以定义一个 Kubernetes 应用程序对象,该对象将包含我们的容器化应用程序所需的所有配置和信息。 总的来说,DockerKubernetes 都是非常流行的容器技术,它们能够提供强大的支持,以便我们轻松地部署和管理我们的应用程序。无论你是在单个容器中运行应用程序,还是在整个集群中运行应用程序,这些技术都可以为你节省大量的时间和精力。 ### 回答3: DockerKubernetes(简称k8s)是两个广泛应用于容器化解决方案的开源工具。Dockerk8s的联合使用可以提供一个完整的,高度可靠和高度可扩展的容器平台,以便于分布式应用的部署和维护。在本文中,我们将探讨如何在Dockerk8s搭建集群环境及分布式应用部署方案。 首先我们需要安装和配置好Dockerk8s的环境,确保Dockerk8s能够正常工作。假设我们需要在三台机器上部署应用,我们需要在每台机器上安装Dockerk8s,每个Docker节点都要配置k8s本地存储,以保证数据的持久性和多副本数据备份。然后,我们需要在每个Kubernetes节点上部署一个Pod网络,使不同节点上的容器能够相互通信。 然后,我们需要编写Kubernetes 部署清单文件,并将它们发布到 Kubernetes 集群中。清单文件中应包含有关应用程序的必要配置信息,例如应用程序的容器镜像、环境变量、端口号、挂载点和资源请求/限制。我们可以使用Deployment,StatefulSet和DaemonSet三种资源类型来管理应用程序的部署和维护。使用这些资源类型可以实现高可靠性,自动化和灵活性的分布式应用部署和管理。 最后,我们可以使用Kubernetes的服务发现机制来暴露应用程序的服务,以便其他容器或服务可以访问它。这可以通过创建一个Kubernetes的service对象,并将其与应用程序的Pods关联起来来实现。Service对象可以提供一个常量的IP地址和DNS名称来代表应用程序的服务,并确保在容器出现故障时仍然可用。 综上所述,Dockerk8s组合可以提供一个强大的容器化解决方案,以及高度可靠和高度可扩展的平台来部署和维护分布式应用程式。在实践中,通过使用Dockerk8s,我们可以更轻松地部署,运行和管理复杂的应用程序,同时提高生产力和应用程序的可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值