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