k8s的结构
- service提供服务
- deployment 创建服务,包含多个pod
- pod包含多个容器
- 容器包含镜像
1.pod无论在不同的节点还是在不同的网络拓补上,pod之间的通讯,都是通过ip(无NAT转换)直接进行
2.pod内是容器,可以有多个或者一个,一般运行一个容器。同一pod的容器一起运行
- 为什么一般一个pod一个容器?
- 因为一个pod只能部署到一个节点中,这样不能充分利用多节点k8s集群的性能
- pod是扩容/缩容的基本单位,不能扩容/缩容容器。不同容器需要不同的扩容/缩容需求
3.pod的创建
- 通过向k8s rest api提供的json或者yaml描述文件创建------可以将配置文件存在版本控制系统中。
- 创建pod命令:kubectl create -f xxx.yml
- 删除pod命令:kubectl delete -f xxx.yml
- 通过kubectl run 创建 -----只能配置有限属性。
- 通过deployment的yaml创建pod
- 一个完整的deployment 的yaml文件
- Gi是1024Mi Mi=1024Ki
- G是1000M M=1000K
apiVersion: apps/v1beta2 k8s 版本
kind: Deployment 资源类型
metadata:
name: >-
candy-service-deployment 类型名称
labels:
app: candy-service k8s通过deployment的label区分不同的服务
spec:
replicas: 1 deployment包含几个pod,用于扩容缩容
selector:
matchLabels:
app: candy-service
template:
metadata:
labels:
app: candy-service
spec:
dnsPolicy: ClusterFirst
terminationGracePeriodSeconds: 30
imagePullSecrets:
- name: regsecret
containers:
- name: candy-service
image: >-
registry-vpc.cn-beijing.aliyuncs.com/vlightv-test/candy-service:images_tag
imagePullPolicy: Always
stdin: true
tty: true
env:
- name: CONFIG_SERVER_URI
value: 'http://10.0.0.121:8863'
- name: CONFIG_SERVER_LABEL
value: tester
- name: aliyun_logs_catalina
value: "stdout"
- name: candy.schedule.config
value: candy-service
resources:
limits:
cpu: 2000m
memory: 1Gi
requests:
cpu: 500m
memory: 128Mi
readinessProbe:
initialDelaySeconds: 60
periodSeconds: 10
timeoutSeconds: 1
successThreshold: 1
failureThreshold: 3
httpGet:
scheme: HTTP
path: /actuator/info
port: 8016
restartPolicy: Always
4.pod的yaml
- kubectl get po xxx -o yaml
-
apiVersion: v1 k8s版本 kind: Pod k8s资源类型 metadata: pod元数据 annotations: sidecar.istio.io/status: '{"version":"17bcca7d301f947fa6f7ba259a9a03b0606d7b6444c8a6d117549fbc99126297","initContainers":["istio-init"],"container