json/Yaml转换工具

https://tools.fun/json2yaml.html

apiVersion: v1
kind: Pod
metadata:
  name: test-pod #缩进表示对象 元数据
spec:
  containers:#复数形式,可以写多个容器
    - name: test-k8s #-转换成一个数组
      image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1
 

转换
json

{
  "apiVersion": "v1",
  "kind": "Pod",
  "metadata": {
    "name": "test-pod"
  },
  "spec": {
    "containers": [
      {
        "name": "test-k8s",
        "image": "ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1"
      }
    ]
  }
}

实例

vim app.yaml
esc
: set pates 然后再i 进入编辑模式
 
apiVersion: apps/v1
kind: Deployment
metadata:
  # 部署名字
  name: test-k8s
spec:
  replicas: 2
  # 用来查找关联的 Pod,所有标签都匹配才行
  selector:
    matchLabels:
      app: test-k8s
  # 定义 Pod 相关数据
  template:
    metadata:
      labels:
        app: test-k8s
    spec:
      # 定义容器,可以多个
      containers:
      - name: test-k8s # 容器名字
        image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像
保存
[root@k8s-master01 ~]# kubectl apply -f app.yaml
deployment.apps/test-k8s created
[root@k8s-master01 ~]# kubectl get pod
NAME                        READY   STATUS              RESTARTS   AGE
test-k8s-68bb74d654-rhc2n   0/1     ContainerCreating   0          24s
test-k8s-68bb74d654-skgp8   0/1     ContainerCreating   0          24s
 
[root@k8s-master01 ~]# kubectl rollout history deployment test-k8s
deployment.apps/test-k8s
REVISION  CHANGE-CAUSE
1         <none>
 
[root@k8s-master01 ~]# kubectl get pod  -o wide
NAME                        READY   STATUS    RESTARTS   AGE   IP            NODE        NOMINATED NODE   READINESS GATES
test-k8s-68bb74d654-6hnqf   1/1     Running   0          12m   10.244.0.17   k8s-node2   <none>           <none>
test-k8s-68bb74d654-96ffq   1/1     Running   0          12m   10.244.0.11   k8s-node2   <none>           <none>
test-k8s-68bb74d654-97rzm   1/1     Running   0          12m   10.244.0.13   k8s-node2   <none>           <none>
test-k8s-68bb74d654-bk6km   1/1     Running   0          12m   10.244.0.16   k8s-node2   <none>           <none>
test-k8s-68bb74d654-hwpxl   1/1     Running   0          12m   10.244.0.14   k8s-node2   <none>           <none>
test-k8s-68bb74d654-jbpz5   1/1     Running   0          12m   10.244.0.18   k8s-node2   <none>           <none>
test-k8s-68bb74d654-k97zx   1/1     Running   0          12m   10.244.0.20   k8s-node2   <none>           <none>
test-k8s-68bb74d654-rcjc6   1/1     Running   0          12m   10.244.0.12   k8s-node2   <none>           <none>
test-k8s-68bb74d654-xvxjh   1/1     Running   0          12m   10.244.0.15   k8s-node2   <none>           <none>
test-k8s-68bb74d654-zbz2h   1/1     Running   0          12m   10.244.0.19   k8s-node2   <none>           <none>
[root@k8s-master01 ~]# kubectl delete all --all
pod "test-k8s-68bb74d654-6hnqf" deleted
pod "test-k8s-68bb74d654-96ffq" deleted
pod "test-k8s-68bb74d654-97rzm" deleted
pod "test-k8s-68bb74d654-bk6km" deleted
 

命令、

# 部署应用
kubectl apply -f app.yaml
# 查看 deployment
kubectl get deployment
# 查看 pod
kubectl get pod -o wide
# 查看 pod 详情
kubectl describe pod pod-name
# 查看 log
kubectl logs pod-name
# 进入 Pod 容器终端, -c container-name 可以指定进入哪个容器。
kubectl exec -it pod-name -- bash
# 伸缩扩展副本
kubectl scale deployment test-k8s --replicas=5
# 把集群内端口映射到节点
kubectl port-forward pod-name 8090:8080
# 查看历史
kubectl rollout history deployment test-k8s
# 回到上个版本
kubectl rollout undo deployment test-k8s
# 回到指定版本
kubectl rollout undo deployment test-k8s --to-revision=2
# 删除部署
kubectl delete deployment test-k8s
 
# 查看全部
kubectl get all
# 重新部署
kubectl rollout restart deployment test-k8s
# 命令修改镜像,--record 表示把这个命令记录到操作历史中
kubectl set image deployment test-k8s test-k8s=ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v2-with-error --record
# 暂停运行,暂停后,对 deployment 的修改不会立刻生效,恢复后才应用设置
kubectl rollout pause deployment test-k8s
# 恢复
kubectl rollout resume deployment test-k8s
# 输出到文件
kubectl get deployment test-k8s -o yaml >> app2.yaml
# 删除全部资源
kubectl delete all --all
 
 
将 Pod 指定到某个节点运行:nodeselector
 
 
限定 CPU、内存总量:文档
 
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    disktype: ssd
 
工作负载分类
 
    Deployment
    适合无状态应用,所有pod等价,可替代
    StatefulSet
    有状态的应用,适合数据库这种类型。
    DaemonSet
    在每个节点上跑一个 Pod,可以用来做节点监控、节点日志收集等
    Job & CronJob
    Job 用来表达的是一次性的任务,而 CronJob 会根据其时间规划反复运行。
 

今日k8s学习总结,需要有一定语言编译基础的同学,像负载均衡,或者最新版本的kubernetes的并没有涉及,这个课件视频,也只是将kubernetes 的组件,环境,还是和云环境密切相关的。