容器云服务运维:Kubernetes基于容器的运维

Pod管理-创建Pod

在default命名空间下使用nginx:latest 镜像创建一个QoS的类为Guaranteed的Pod,名称为qos-demo。

[root@k8s-master-node1 ~]# vi qos-demo.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: qos-demo
spec:
  containers:
  - image: nginx:latest
    name: nginx
    imagePullPolicy: IfNotPresent
    resources:
      limits:
        cpu: "500m"
        memory: "200M"

安全管理-配置Pod安全上下文

使用busybox镜像启动一个名为context-demo的Pod,为该Pod配置安全上下文,要求容器内以用户1000和用户组3000来运行所有进程,并启动时执行“sleep 1h”命令

[root@k8s-master-node1 ~]# vi context-demo.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: context-demo
spec:
  securityContext:
    runAsUser: 1000
    runAsGroup: 3000
    fsGroup: 2000
  containers:
  - image: busybox:latest
    name: busybox
    imagePullPolicy: IfNotPresent
    command: ["sh","-c","sleep 1h"]
    securityContext:
      allowPrivilegeEscalation: false 
  
[root@k8s-master-node1 ~]# kubectl create -f context-demo.yaml 
pod/context-demo created
[root@k8s-master-node1 ~]# kubectl get -f context-demo.yaml 
NAME           READY   STATUS    RESTARTS   AGE
context-demo   1/1     Running   0          5s

CRD管理-创建自定义资源类型

在Kubernetes集群中自定义一种资源类型Student,API为stable.example.com/v1,单数形式为student,复数形式为students,简写为stu,作用域为命名空间级,然后再default命名空间下创建一个名为exam的student对象

[root@k8s-master-node1 ~]# vi stu.yaml 
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: students.stable.example.com
spec:
  group: stable.example.com
  versions:
  - name: v1
    served: true
    storage: true
    schema:
      openAPIV3Schema:
        type: object
  scope: Namespaced
  names: 
    plural: students
    singular: student
    kind: Student
    shortNames:
    - stu
[root@k8s-master-node1 ~]# kubectl create -f stu.yaml
[root@k8s-master-node1 ~]# vi exam-stu.yaml
apiVersion: stable.example.com/v1
kind: Student
metadata:
  name: exam
  namespace: default
[root@k8s-master-node1 ~]# kubectl create -f exam-stu.yaml


# 参数解释
apiVersion: apiextensions.k8s.io/v1 #API群组和版本
kind: CustomResourceDefinition #资源类别
metadata:
  -name <string> #资源名称
spec:
  conversion <object> #定义不同版本间的格式转换方式
    strategy <string># 不同版本间的自定义资源转换策略,有None和webhook两种取值
    webhook <0bject>#如何调用用于进行格式转换的webhook
  group <string>#资源所属的API群组
  names <object># 自定义资源的类型,即该CRD创建资源规范时使用的kind
    categories <[]string>#资源所属的类别编目,例如"kubectl get all"中的all
    kind <string> #kind名称,必选字段
    listKind <string> #资源列表名称,默认为"`kind`List"
    plural <string>  #复数,用于API路径`/apis/<group>/<version>/. . ./<plural>"
    shortNames <[string>#该资源的kind的缩写格式
    singular <string>#资源kind的单数形式,必须使用全小写字母,默认为小写的kind名称
  preserveUnknownFields <boolean> #预留的非知名字段,kind等都是知名的预留字段
  scope <string> #作用域,可用值为Cluster和Namespaced
  versions <[]object>#版本号定义
    additionalPrinterColumns <[]0bject> #需要返回的额外信息
    name <string>  #形如vM[alphaN|betaN]格式的版本名称,例如v1或vlalpha2等
    schema <object> #该资源的数据格式(schema)定义,必选字段
      openAPIV3Schema <object> #用于校验字段的schema对象,格式请参考相关手册
    served <boolean> #是否允许通过RESTful API调度该版本,必选字段
    storage <boolean> #将自定义资源存储于etcd中时是不是使用该版本
    subresources <0bject>#子资源定义
      scale <0bject># 启用scale子资源,通过autoscaling/v1.Scale发送负荷
      status <map[string]># 启用status子资源,为资源生成/status端点

注释原文链接:https://blog.csdn.net/weixin_50481708/article/details/127033146

解析管理-添加主机别名Pod

使用nginx镜像再default命名空间下创建一个名为nginx的Pod,并再Pod的/etc/hosts 中添加IP地址127.0.0.1与chinashkills的解析

[root@k8s-master-node1 ~]# cat jiexi.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  restartPolicy: Never
  hostAliases:
  - ip: "127.0.0.1"
    hostnames:
    - "chinaskills"
  containers:
  - image: nginx:latest
    name: nginx
    imagePullPolicy: IfNotPresent
    command:
    - cat
    args:
    - "/etc/hosts"
[root@k8s-master-node1 ~]# kubectl create -f jiexi.yaml
[root@k8s-master-node1 ~]# kubectl logs nginx 
# Kubernetes-managed hosts file.
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
10.244.0.25     nginx

# Entries added by HostAliases.
127.0.0.1       chinaskills

HPA管理-创建HPA规则

默认情况下HPA是无法调整伸缩灵敏度的,但不同的业务场景对伸缩灵敏度的要求不一样。要求再default命名空间下使用nginx镜像创建一个名为web的deployment,自定义HPA的伸缩灵敏度。为该deployment创建一个名为web的HPA,扩容时立即新增当前9倍数量的副本数,时间窗口为5s,伸缩范围为1-1000.例如一开始只有一个Pod,当CPU使用率超过80%时,Pod数据变化趋势为: 1→10→100→1000

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hap-nginx-deploy
  namespace: default
  labels:
    app: nginx-demo
spec:
  replicas: 1
  revisionHistoryLimit: 4
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: web
        image: nginx
        ports:
        - containerPort: 80  
        

kubectl create -f hpa-deploy-demo.yaml


kubectl autoscale deployment hpa-nginx-deploy --cpu-percent=80 --min=1 --max=100
deployment "hpa-nginx-deploy" autoscaled
···
kubectl get hpa                                                         
NAME        REFERENCE              TARGET    CURRENT   MINPODS   MAXPODS   AGE
hpa-nginx-deploy   Deployment/hpa-nginx-deploy   10%       0%        1         10        13s

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值