三、在kubernetes集群上运行应用
1、创建多个节点的k8s集群
创建config.yaml文件
# this is kind-example-config.yaml
# three node (two workers) cluster config
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
创建多节点集群
sudo kind create cluster --name my_cluster_name --config kind-example-config.yaml
2、创建一个简单的pod
2.1 关于pod
每个pod是一组紧密相关的容器(一个或多个容器),一个pod运行一个应用程序,它是一台独立的逻辑机器,内部每个容器运行一个进程。
2.2 创建应用config.yaml文件
apiVersion: v1
kind: Pod
metadata:
name: kubia-liveness
spec:
containers:
- image: ksfzhaohui/kubia-unhealthy
name: kubia
livenessProbe:
httpGet:
path: /
port: 8080
2.3 执行指令
sudo kubectl create -f kubia-liveness-probe.yaml
2.4 pod的运行机制
3、创建更高级的ReplicationController
3.1 ReplicationController介绍以及相对于普通pod的优势
ReplicationController是一种kubernetes资源,可确保它的pod始终保持运行状态;如果pod因任何原因消失(包括节点崩溃),则ReplicationController会重新创建Pod;
ReplicationController会持续监控正在运行的pod列表,是确保pod的数量始终与其标签选择器匹配,一个ReplicationController有三个主要部分:
a、label selector(标签选择器),用于确定ReplicationController作用域中有哪些pod;
b、replica count(副本个数),指定应运行的pod数量;
c、pod template(pod模板),用于创建新的pod副本。
以上三个属性可以随时修改,但是只有副本个数修改对当前pod会有影响,比如当前副本数量减少了,那当前pod有可能会被删除。
ReplicationController提供的好处:
a、确保一个pod(或多个pod副本)持续运行,失败重启新pod;
b、集群节点发生故障时,它将为故障节点上运行的所有pod创建副本;
c、轻松实现pod的水平伸缩。
3.2 创建config.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: kubia
spec:
replicas: 3
selector:
app: kubia
template:
metadata:
labels:
app: kubia
spec:
containers:
- name: kubia
image: luksa/kubia
ports:
- containerPort: 8080
3.3 执行指令
kubectl create -f kubia-rc.yaml
4、关于pod的其它操作
4.1 查询pod
sudo kubectl get pods
4.2 删除pod
sudo kubectl delete pod pod_name