如何在Kubernetes上进行微服务部署
发布网友
发布时间:2022-04-19 14:23
我来回答
共1个回答
热心网友
时间:2022-05-02 14:39
使用Rancher来运行Kubernetes有很多优势。大多数情况下能使用户和IT团队部署和管理工作更加方便。Rancher自动在Kubernetes后端实现etcd 的HA,并且将所需要的服务部署到此环境下的任何主机中。在设置访问控制,可以轻易连接到现有的LDAP和AD基础构架。Rancher还可以自动实现容器联网以及为Kubernetes提供负载均衡服务。通过使用Rancher,你将会在几分钟内有拥有Kubernetes的HA实现。
命名空间
现在我们的集群已经运行了,让我们进入并查看一些基本的Kubernetes资源吧。你可以访问Kubernetes集群也可以直接通过kubectl CLI访问,或者通过Rancher UI 访问。Rancher的访问管理图层控制可以访问集群,所以你需要在访问CLI前从Rancher UI那里生成API密匙。
我们来看下第一个Kubernetes资源命名空间,在给定的命名空间中,所有资源名称必须有唯一性。此外,标签是用来连接划定到单个命名空间的资源。这就是为什么同一个Kubernetes集群上可以用命名空间来隔离环境。例如,你想为应用程序创建Alpha, Beta和生产环境,以便可以测试最新的更改且不会影响到真正的用户。最后创建命名空间,复制下面的文本到namespace.yaml文件,并且运行 kubectl -f namespace.yaml 命令,来创建一个beta命名空间。
kind: Namespace
apiVersion: v1
metadata:
name: beta
labels:
name: beta
当然你还可以使用顶部的命名空间菜单栏从Rancher UI上创建、查看和选择命名空间。
你可以使用下面的命令,用kubectl来为CLI交互设置命名空间:
$ kubectl config set-context Kubernetes --namespace=beta.
为了验证目前context是否已经被设置好,你可以使用config view命令,验证一下输出的命名空间是否满足你的期望。
$ kubectl config view | grep namespace command namespace: beta
Pods
现在我们已经定义好了命名空间,接下来开始创建资源。首先我们要看的资源是Pod。一组一个或者多个容器的Kubernetes称为pod,容器在pod 里按组来部署、启动、停止、和复制。在给定的每个主机种类里,只能有一个Pod,所有pod里的容器只能在同一个主机上运行,pods可以共享网络命名空间,通过本地主机域来连接。Pods也是基本的扩展单元,不能跨越主机,因此理想状况是使它们尽可能接近单个工作负载。这将消除pod在扩展或缩小时产生的副作用,以及确保我们创建pods不太耗资源而影响到主机。
我们来给名为mywebservice的pod定义,在规范命名web-1-10中它有一个容器并使用nginx容器镜像,然后把端口为80下的文本添加至pod.yaml文档中。
apiVersion: v1
kind: Pod
metadata:
name: mywebservice
spec:
containers:
- name: web-1-10
image: nginx:1.10
ports:
- containerPort: 80
使用kubetl create命令创建pod,如果您使用set-context command设置了您的命名空间,pods将会在指定命名空间中被创立。在通过运行pods命令去验证pod状态。完成以后,我们可以通过运行kubetl delete命令删除pod。
$ kubectl create -f ./pod.yaml
pod "mywebservice" created
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
mywebservice 1/1 Running 0 37s
$ kubectl delete -f pod.yaml
pod "mywebservice" deleted
在Rancher UI 中查看pod,通过顶端的菜单栏选择 Kubernetes > Pods 。