k8s搭建一些常用服务示例
在博客Kubernetes集群搭建(CentOS7) 搭建完成的基础上,为了验证集群是否可用搭建一些常见的服务
一、Nginx
为了快速地验证一下上面搭建集群是否可用,我们创建一个Nginx Deployment:
$ kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
使用命令kubectl get pods,svc
查看是否正常:
使用命令kubectl get pods,svc -o wide
查看该Pod具体位于哪一个节点:
可以看到其位于Node2节点,该节点IP为192.168.33.13,端口为30935,使用浏览器访问该地址:
使用kubectl get pods
命令查看Pod的情况:
使用kubectl delete
命令删除这个Pod看看会怎样:
可以看到,刚刚的名为xxx的Pod处于Terminating(结束中)的状态,而另一个新的名为xxx的Pod正处于ContainerCreating(创建中)状态,因为默认情况下,replicas
的值为1,Kubernetes集群会始终保持Nginx的实例为1。
要删除Nginx可以通过删除deployment来完成,使用kubectl get deployments
命令查看当前的deployment:
使用命令kubectl delete deployment nginx
:
实际中我们一般通过yml或者json文件来创建应用,下面我们使用yml的方式创建一个3实例的Nginx集群:
vim nginx-rc.yml
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-rc
spec:
replicas: 3
selector:
name: nginx
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
ports:
- port: 8080
targetPort: 80
protocol: TCP
type: NodePort
selector:
name: nginx
接着执行下面这两条命令启动Nginx集群:
kubectl create -f nginx-rc.yml
使用kubectl get pods
命令查看Pod情况:
使用kubectl get services
命令查看Service情况:
使用kubectl describe svc nginx-service
命令查看Nginx Service详情:
使用命令kubectl get pods,svc -o wide
查看Nginx Pod具体位于哪一个节点:
可以看到在node1和node2节点上都有Nginx的Pod,使用浏览器访问http://192.168.33.12:32631/或者http://192.168.33.13:32631/:
删除的话执行下面这两条命令即可:
kubectl delete -f nginx-rc.yml
参考文章:https://mrbird.cc/Kubeadm-install-Kubernetes1-16-2-cluster.html
二、Tomcat
编写资源文件
tomcat-rc.yaml
基于ReplicationController的副本控制器ymal文件
apiVersion: v1
kind: ReplicationController
metadata:
name: test-tomcat
spec:
replicas: 2
template:
metadata:
labels:
app: test-tomcat
spec:
containers:
- name: test-tomcat
image: docker.io/tomcat
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: test-tomcat
spec:
ports:
- port: 8080
targetPort: 8080
nodePort: 31111
selector:
app: test-tomcat
type: NodePort
kubectl create -f tomcat-rc.yaml
基于deployment的副本控制器ymal文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: mytomcat
spec:
replicas: 5
selector:
matchLabels:
app: mytomcat
minReadySeconds: 1
progressDeadlineSeconds: 60
revisionHistoryLimit: 5
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
metadata:
name: mytomcat
labels:
app: mytomcat
spec:
containers:
- name: mytomcat
image: tomcat:8
ports:
- containerPort: 8080
volumeMounts:
- name: tz-config
mountPath: /etc/localtime
volumes:
- name: tz-config
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
---
apiVersion: v1
kind: Service
metadata:
name: mytomcat
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30012
selector:
app: mytomcat
参考文章:
配置文件写法部分