cloud 07
一、k8s服务管理
创建后端应用
固定 IP 服务
[root@master ~]# vim websvc.yaml
---
kind: Service
apiVersion: v1
metadata:
name: websvc
spec:
type: ClusterIP
clusterIP: 10.245.1.80 # 可以设置 ClusterIP
selector:
app: web
ports:
- protocol: TCP
port: 80
targetPort: 80
[root@master ~]# kubectl replace --force -f websvc.yaml
service "websvc" deleted
service/websvc replaced
[root@master ~]# kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
kubernetes ClusterIP 10.245.0.1 <none> 443/TCP
websvc ClusterIP 10.245.1.80 <none> 80/TCP
端口别名
安装控制器
三、Dashboard 安装
#下面给大家介绍下新的k8s插件
web 管理插件
安装 Dashboard
cloud 08
#上一小节讲过K8S的有控制组件和计算组件。现在我们一起来深入研究K8S的控制组件。
一、Deployment
资源清单文件
[root@master ~]# kubectl create deployment myweb --image=myos:httpd --dry-run=client -o yaml
[root@master ~]# vim mydeploy.yaml
---
kind: Deployment # 资源对象类型
apiVersion: apps/v1 # 版本
metadata: # 元数据
name: mydeploy # 名称
spec: # 详细定义
replicas: 3 # 副本数量
selector: # 定义标签选择器
matchLabels: # 支持 matchExpressions 表达式语法
app: deploy-httpd # 通过标签来确定那个 Pod 由它来管理
template: # 定义用来创建 Pod 的模板,以下为 Pod 定义
metadata:
labels:
app: deploy-httpd
spec:
containers:
- name: apache
image: myos:httpd
配置案例
# 创建控制器
[root@master ~]# kubectl apply -f mydeploy.yaml
deployment.apps/mydeploy created
[root@master ~]# kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
mydeploy 3/3 3 3 1s
# 控制器自动创建 ReplicaSet
[root@master ~]# kubectl get replicasets
NAME DESIRED CURRENT READY AGE
mydeploy-76f96b85df 3 3 3 2s
# 控制器自动创建 Pod
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mydeploy-76f96b85df-5gng9 1/1 Running 0 3s
mydeploy-76f96b85df-vsfrw 1/1 Running 0 3s
mydeploy-76f96b85df-z9x95 1/1 Running 0 3s
# 集群自维护自治理
[root@master ~]# kubectl delete pod --all
pod "mydeploy-76f96b85df-5gng9" deleted
pod "mydeploy-76f96b85df-vsfrw" deleted
pod "mydeploy-76f96b85df-z9x95" deleted
# 删除后自动重新创建
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mydeploy-76f96b85df-7dvwh 1/1 Running 0 7s
mydeploy-76f96b85df-kpbz4 1/1 Running 0 7s
mydeploy-76f96b85df-kr2zq 1/1 Running 0 7s
集群服务
清理资源对象
# 删除控制器时会自动回收自己创建的 Pod
[root@master ~]# kubectl delete deployments mydeploy
deployment.apps "mydeploy" deleted
二、DaemonSet
配置案例
清理资源对象
# 删除控制器
[root@master ~]# kubectl delete daemonsets myds
daemonset.apps "myds" deleted
三、Job、CronJob
Job 控制器
# 资源文件模板
[root@master ~]# kubectl create job myjob --image=myos:8.5 --dry-run=client -o yaml -- sleep 3
[root@master ~]# vim myjob.yaml
---
kind: Job
apiVersion: batch/v1
metadata:
name: myjob
spec:
template: # 以下定义 Pod 模板
metadata: {}
spec:
restartPolicy: OnFailure
containers:
- name: myjob
image: myos:8.5
command: ["/bin/sh"]
args:
- -c
- |
sleep 3
exit $((RANDOM%2))
[root@master ~]# kubectl apply -f myjob.yaml
job.batch/myjob created
# 失败了会重启
[root@master ~]# kubectl get pods -l job-name=myjob -w
NAME READY STATUS RESTARTS AGE
myjob--1-lrtbk 1/1 Running 0 2s
myjob--1-lrtbk 0/1 Error 0 4s
myjob--1-lrtbk 1/1 Running 1 (1s ago) 5s
myjob--1-lrtbk 0/1 Completed 1 9s
[root@master ~]# kubectl get jobs.batch
NAME COMPLETIONS DURATION AGE
myjob 1/1 8s 12s
# 删除Job控制器
[root@master ~]# kubectl delete -f myjob.yaml
job.batch "myjob" deleted
#pod控制器创建失败,任务会确保创建成功而重启,避免失败
Cronjob
#类似ansible中的crontab模块,可以定时执行某一任务
四、StatefulSet
配置后端服务
# 为 Deploy 模板添加资源配额
[root@master ~]# cat mydeploy.yaml websvc.yaml >mycluster.yaml
[root@master ~]# vim mycluster.yaml
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: mydeploy
spec:
replicas: 1
selector:
matchLabels:
app: deploy-httpd
template:
metadata:
labels:
app: deploy-httpd
spec:
containers:
- name: apache
image: myos:httpd
resources: # 为该资源设置配额
requests: # HPA 控制器会根据配额使用情况伸缩集群
cpu: 300m # CPU 配额
---
kind: Service
apiVersion: v1
metadata:
name: websvc
spec:
type: ClusterIP
clusterIP: 10.245.1.80
selector:
app: deploy-httpd
ports:
- protocol: TCP
port: 80
targetPort: 80
[root@master ~]# kubectl replace --force -f mycluster.yaml
deployment.apps/mydeploy replaced
service/websvc replaced
# 验证服务
[root@master ~]# kubectl top pods
NAME CPU(cores) MEMORY(bytes)
mydeploy-b4f9dc786-w4x2z 6m 18Mi
[root@master ~]# curl -s http://10.245.1.80/info.php
<pre>
Array
(
[REMOTE_ADDR] => 10.244.219.64
[REQUEST_METHOD] => GET
[HTTP_USER_AGENT] => curl/7.61.1
[REQUEST_URI] => /info.php
)
php_host: mydeploy-b4f9dc786-w4x2z
1229
HPA 控制器
课后总结:
#我们本节学的好多控制器,都有差异和区别,可以按照类似以下的提示词,来对AI提问,得到更加符合工作使用环境的回答。
至此云计算cloud二周目内容更新完毕!
大家有想练习的,可以去华为云、阿里云等云平台,创建帐号,使用30天免费体验版云产品
熟悉相关云产品的使用与配置,里面也有一些项目的免费体验课,可以照着案例学基本项目架构
下一阶段,将回重回网络阶段,深入了解云计算与云原生领域的网络架构知识.
下个阶段见!!!