本文的镜像需自己制作
可以参考Docker进阶(制作镜像,共享卷,网络通信,私有仓库)_kali_yao的博客-CSDN博客
初始化资源文件
]# cat kubeadm-init.yaml apiVersion: kubeadm.k8s.io/v1beta2 bootstrapTokens: - groups: - system:bootstrappers:kubeadm:default-node-token token: abcdef.0123456789abcdef ttl: 24h0m0s usages: - signing - authentication kind: InitConfiguration localAPIEndpoint: advertiseAddress: 192.168.1.21 bindPort: 6443 nodeRegistration: criSocket: /var/run/dockershim.sock name: master taints: - effect: NoSchedule key: node-role.kubernetes.io/master --- apiServer: timeoutForControlPlane: 4m0s apiVersion: kubeadm.k8s.io/v1beta2 certificatesDir: /etc/kubernetes/pki clusterName: kubernetes controllerManager: {} dns: type: CoreDNS etcd: local: dataDir: /var/lib/etcd imageRepository: 192.168.1.100:5000 kind: ClusterConfiguration kubernetesVersion: v1.17.6 networking: dnsDomain: cluster.local podSubnet: 10.244.0.0/16 serviceSubnet: 10.254.0.0/16 scheduler: {} --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration mode: ipvs
apache资源文件
~]# vim apache-example.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: apache-example spec: selector: matchLabels: app: myapp-apache replicas: 1 template: metadata: labels: app: myapp-apache spec: #nodeName: node-0001 containers: - name: apache image: 192.168.1.100:5000/myos:httpd ports: - protocol: TCP containerPort: 80 restartPolicy: Always
~]# vim httpd-example.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: httpd-example spec: selector: matchLabels: app: myapp-httpd replicas: 3 template: metadata: labels: app: myapp-httpd spec: containers: - name: httpd image: 192.168.1.100:5000/myos:httpd ports: - protocol: TCP containerPort: 80 restartPolicy: Always
]# cat httpd-example-v1.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: httpd-example spec: selector: matchLabels: app: myapp-httpd replicas: 1 template: metadata: labels: app: myapp-httpd spec: containers: - name: httpd image: 192.168.1.100:5000/myos:httpd ports: - protocol: TCP containerPort: 80 restartPolicy: Always
~]# cat httpd-example-v2.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: httpd-example spec: selector: matchLabels: app: myapp-nginx replicas: 3 revisionHistoryLimit: 10 strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: labels: app: myapp-nginx spec: containers: - name: nginx image: 192.168.1.100:5000/myos:nginx ports: - protocol: TCP containerPort: 80 restartPolicy: Always
~]# cat deployment-example.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: deployment-example spec: selector: matchLabels: app: myos replicas: 1 template: metadata: labels: app: myos spec: containers: - name: myos image: 192.168.1.100:5000/myos:v1804 stdin: true tty: true restartPolicy: Always
~]# cat daemonset-example.yaml --- apiVersion: apps/v1 kind: DaemonSet metadata: name: daemonset-example namespace: kube-system spec: selector: matchLabels: app: myapp1 template: metadata: labels: app: myapp1 spec: #tolerations: #- key: "node-role.kubernetes.io/master" # operator: "Equal" # value: "" # effect: "NoSchedule" containers: - name: myos image: 192.168.1.100:5000/myos:v1804 stdin: true tty: true restartPolicy: Always
service服务资源文件
]# cat service-example.yaml --- apiVersion: v1 kind: Service metadata: name: apache-service spec: ports: - protocol: TCP port: 80 targetPort: 80 selector: app: myapache type: ClusterIP
]# cat web-example.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: web-example spec: selector: matchLabels: app: myapp-web replicas: 3 #revisionHistoryLimit: 10 #strategy: # rollingUpdate: # maxSurge: 25% # maxUnavailable: 25% # type: RollingUpdate template: metadata: labels: app: myapp-web spec: #nodeName: node-0001 #nodeSelector: # disktype: ssd #affinity: # podAffinity: # requiredDuringSchedulingIgnoredDuringExecution: # - labelSelector: # matchExpressions: # - key: app # operator: In # values: # - myapp-php # topologyKey: kubernetes.io/hostname # podAntiAffinity: # preferredDuringSchedulingIgnoredDuringExecution: # - weight: 1 # podAffinityTerm: # labelSelector: # matchExpressions: # - key: app # operator: In # values: # - myapp-apache # topologyKey: kubernetes.io/hostname containers: - name: nginx image: 192.168.1.100:5000/myos:nginx ports: - protocol: TCP containerPort: 80 restartPolicy: Always
pod资源文件
~]# cat pod-example.yaml apiVersion: v1 kind: Pod metadata: name: pod-example labels: app: myapp spec: containers: - name: myos image: 192.168.1.100:5000/myos:v1804 stdin: true tty: true restartPolicy: Always
apache的service资源文件
~]# cat loadbalance.yaml --- apiVersion: v1 kind: Service metadata: name: test-service spec: selector: app: myapache ports: - protocol: TCP port: 80 targetPort: 80 clusterIP: externalIPs: - 192.168.1.101 type: LoadBalancer
调用pv资源文件
~]# cat configmap-example.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: myweb spec: selector: matchLabels: app: myweb replicas: 1 template: metadata: labels: app: myweb spec: containers: - name: php-fpm image: 192.168.1.100:5000/myos:php-fpm - name: nginx image: 192.168.1.100:5000/myos:nginx ports: - protocol: TCP containerPort: 80 volumeMounts: - name: nginx-php subPath: nginx.conf mountPath: /usr/local/nginx/conf/nginx.conf volumes: - name: nginx-php configMap: name: nginx-conf
定时任务资源文件
~]# cat cronjob-example.yaml --- apiVersion: batch/v1beta1 kind: CronJob metadata: name: cronjob-pi spec: schedule: "*/1 * * * *" jobTemplate: spec: template: spec: containers: - name: pi image: 192.168.1.100:5000/myos:v1804 command: ["sleep", "30"] restartPolicy: OnFailure
]# cat job-example.yaml --- apiVersion: batch/v1 kind: Job metadata: name: pi spec: template: spec: containers: - name: pi image: 192.168.1.100:5000/myos:v1804 command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(500)"] restartPolicy: OnFailure
pvc资源文件
]# cat pvc-example.yaml --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nfs spec: volumeMode: Filesystem accessModes: - ReadWriteMany resources: requests: storage: 10Gi selector: matchLabels: app: web-nfs
调用pvc资源文件
]# cat php-example.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: php-example spec: selector: matchLabels: app: myapp-php replicas: 1 template: metadata: labels: app: myapp-php spec: #affinity: # nodeAffinity: # preferredDuringSchedulingIgnoredDuringExecution: # - weight: 1 # preference: # matchExpressions: # - key: cpu # operator: In # values: # - high # requiredDuringSchedulingIgnoredDuringExecution: # nodeSelectorTerms: # - matchExpressions: # - key: mem # operator: In # values: # - high # - mid containers: - name: php-fpm image: 192.168.1.100:5000/myos:php-fpm ports: - protocol: TCP containerPort: 9000 restartPolicy: Always
]# cat volume-example.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: myweb spec: selector: matchLabels: app: myweb replicas: 1 template: metadata: labels: app: myweb spec: nodeSelector: kubernetes.io/hostname: node-0003 containers: - name: myos image: 192.168.1.100:5000/myos:v1804 stdin: true tty: true #volumeMounts: #- name: web-site # mountPath: /var/www/html - name: apache image: 192.168.1.100:5000/myos:httpd ports: - protocol: TCP containerPort: 80 #volumeMounts: #- name: my-cache # mountPath: /var/cache #- name: my-data # mountPath: /var/www/html #volumes: #- name: my-cache # emptyDir: {} #- name: my-data # hostPath: # path: /var/webroot # type: DirectoryOrCreate #- name: web-site # persistentVolumeClaim: # claimName: pvc-nfs
pv资源文件
]# cat pv-example.yaml apiVersion: v1 kind: PersistentVolume metadata: name: pv-nfs labels: app: web-nfs spec: volumeMode: Filesystem capacity: storage: 10Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain nfs: path: /var/webroot server: 192.168.1.100
hpa资源文件
~]# cat hpa-example.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: myweb spec: selector: matchLabels: app: apache replicas: 1 template: metadata: labels: app: apache spec: containers: - name: apache image: 192.168.1.100:5000/myos:httpd ports: - containerPort: 80 resources: requests: cpu: 200m restartPolicy: Always --- apiVersion: v1 kind: Service metadata: name: web-service spec: ports: - protocol: TCP port: 80 targetPort: 80 selector: app: apache type: ClusterIP --- apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: myweb spec: minReplicas: 1 maxReplicas: 3 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: myweb targetCPUUtilizationPercentage: 50