使用 Java 操作 Kubernetes API

116 篇文章 19 订阅

目录

本文目标

k8s-client-java选型

kubernetes-client/java和fabric8io/kubernetes-client对比

kubernetes-client/java的使用

REST API

REST API版本说明

Alpha、Beta、RC、GA版本的区别

kubectl api-versions

REST API 实例:     

API Object 整体划分图 (红星符号代表常用资源)

kubernetes-client/java客户端API接口识别

ApiClient初始化&认证

CRD资源增删改查

操作示例

Namespaces增删改查

Node增删改查

Pod增删改查

优先级

Services增删改查

操作示例

Deployment增删改查

kubernetes-client/java 使用注意(很重要):

 Kubernetes资源内容查询:JSONPath

 kubernetes-client: delete操作异常 Expected a string but was BEGIN_OBJECT at line 1 column 1912

 kubernetes:CPU 和内存单位解释

 kubenetes: patch更新和替换、删除资源内容

kubernetes:字段选择器(field-selector)标签选择器(labels-selector)和筛选 Kubernetes 资源

Kubernetes参数:dryRun理解

kubernetes-client/java:Scale报错400 BadRequest 或 500 cannot unmarshal object

Kubectl :--v 接口调试,以及设置日志输出详细程度


本文目标

基于官方kubernetes-client/java类库,实现通过java完成对kubenetes原生资源对象(pod、node、namespace、servcie、deployment)和自定义资源对象(如:cluster)的增删改查或事件监听(watch)

k8s-client-java选型

目前通过java操作k8s,开源版本共有两个:

kubernetes-client/javafabric8io/kubernetes-client对比

        和官网API一致性  社区活跃度                                         代码生成
kubernetes-client/java根据k8s-openapi随之更新,一致性和更新频率高目前不活跃kubernetes-client/java提供了生成代码的通用跨语言工具,该工具托管在 kubernetes-client / gen存储库中
fabric8io/kubernetes-client一致性低,更新慢;其中不支持k8s1.8和1.13社区活跃,目前使用者多暂无

鉴于kubernetes-client/java官网API一致性好,本文决定采用它

kubernetes-client/java的使用

REST API

API 资源使用REST模式。

kube-apiserver 支持同时提供 https(默认监听在 6443 端口)和 http API(默认监听在 127.0.0.1 的 8080 端口),其中 http API 是非安全接口,不做任何认证授权机制,不建议生产环境启用。两个接口提供的 REST API 格式相同

图片来自  OpenShift Blog

 

 

  1. GET /<资源名的复数格式>:获得某一类型的资源列表,例如GET /pods 返回一个Pod资源列表。

  2. POST /<资源名的复数格式>:创建一个资源,该资源来自用户提供的JSON对象。

  3. GET /<资源名复数格式>/<名字>:通过给出的名称(Name)获得单个资源,例如GET /pods/first 返回一个名称为“first”的Pod。

  4. DELETE /<资源名复数格式>/<名字>:通过给出的名字删除单个资源,删除选项(DeleteOptions)中可以指定的优雅删除(Grace Deletion)的时间(GracePeriodSeconds),该可选项表明了从服务端接收到删除请求到资源被删除的时间间隔(单位为秒)。

  5. PUT /<资源名复数格式>/<名字>:通过给出的资源名和客户端提供的JSON对象来更新或创建资源。

  6. PATCH /<资源名复数格式>/<名字>:选择修改资源详细指定的域。

  7. GET /watch/<资源名复数格式>:随时间变化,不断接收一连串的JSON对象,这些JSON对象记录了给定资源类别内所有资源对象的变化情况。

  8. GET /watch/<资源名复数格式>/:随时间变化,不断接收一连串的JSON对象,这些JSON对象记录了某个给定资源对象的变化情况。

REST API版本说明

为了在兼容旧版本的同时不断升级新的API,Kubernetes支持多种API版本,每种API版本都有不同的API路径,例如/api/v1或 /apis/extensions/v1beta1

Alpha级别:

  • 包含alpha名称的版本(例如v1alpha1)。
  • 该软件可能包含错误。启用一个功能可能会导致bug。默认情况下,功能可能会被禁用。

Beta级别:

  • 包含beta名称的版本(例如v2beta3)。
  • 该软件经过很好的测试。启用功能被认为是安全的。默认情况下功能是开启的。
  • 大家使用过的Beta版本后,可以多给社区反馈,如果此版本在后续更新后将不会有太大变化。

Stable级别:

  • 该版本名称命名方式:vX这里X是一个整数。
  • Stable版本的功能特性,将出现在后续发布的软件版本中。

Alpha、Beta、RC、GA版本的区别

  • Alpha:是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用。
  • Beta:也是测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。
  • RC:(Release Candidate) 顾名思义么 ! 用在软件上就是候选版本。系统平台上就是发行候选版本。RC版不会再加入新的功能了,主要着重于除错。
  • GA:General Availability,正式发布的版本,在国外都是用GA来说明release版本的。

kubectl api-versions

查看 apiserver暴露的接口

kubectl api-versions

或者

curl -H'Authorization: Bearer token' https://192.168.1.122:6443/apis --insecure

[root@fly]# kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1beta1
apps/v1
apps/v1beta1
apps/v1beta2
authentication.istio.io/v1alpha1
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
config.istio.io/v1alpha2
events.k8s.io/v1beta1
extensions/v1beta1
networking.istio.io/v1alpha3
networking.k8s.io/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
rbac.istio.io/v1alpha1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

REST API 实例:     

  https://10.10.124.199:6443/apis/apps/v1/deployment

  1. https  : kube-apiserver 支持同时提供https(默认监听在 6443 端口)和 http API(默认监听在 127.0.0.1 的 8080 端口),由于http api 是不会经过认证授权的,在生产环境中,为了安全性考虑,推荐是不启用。
  2. 10.10.124.199  : 该ip地址为kubernetes master 地址,在集群为高可用设置的场景下,该ip地址为 vip 地址。
  3. apis :kubernetes在这一层级只有api 与 apis ,api只有初步核心资源,包含pod,node,namespace等基本资源
  4. apps : 为api group 名,api group 是kubernetes 对资源类型特性相近的整合。
  5. v1: 是作为api group  version, 在新资源类型的加入到kubernetes,会经历版本变迁: v1alpha1-->v1alpha2-->....-->v1alphaN-->v1beta1-->v1beta2-->v1 。
  6. deployment : 是kubernetes 的资源名

 

API Object 整体划分图 (红星符号代表常用资源)

 

kubernetes-client/java客户端API接口识别

打开kubernetes-client/java,只要是以Api结尾,一般就是我们可以调用的Api接口

API接口识别

ApiClient初始化&认证

ApiClient client = new ClientBuilder().setBasePath("ApiServer地址").setVerifyingSsl(false)
                .setAuthentication(new AccessTokenAuthentication("Token")).build();
        Configuration.setDefaultApiClient(client);

在生产环境,建议放在 程序启动前的初始化方法

CRD资源增删改查

使用 CustomObjectsApi apiInstance = new CustomObjectsApi(); 操作

MethodHTTP requestDescription
createClusterCustomObjectPOST /apis/{group}/{version}/{plural}创建集群范围CRD资源对象
createNamespacedCustomObjectPOST /apis/{group}/{version}/namespaces/{namespace}/{plural}创建分区范围CRD资源对象
deleteClusterCustomObjectDELETE /apis/{group}/{version}/{plural}/{name}删除集群范围CRD资源对象
deleteNamespacedCustomObjectDELETE/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}删除分区范围CRD资源对象
getClusterCustomObjectGET /apis/{group}/{version}/{plural}/{name}获取集群范围CRD资源对象
getClusterCustomObjectScaleGET /apis/{group}/{version}/{plural}/{name}/scale获取集群范围CRD资源对象-scale
getClusterCustomObjectStatusGET /apis/{group}/{version}/{plural}/{name}/status获取集群范围CRD资源对象-状态
getNamespacedCustomObjectGET /apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}获取分区范围CRD资源对象
getNamespacedCustomObjectScaleGET/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}/scale获取分区范围CRD资源对象-scale
getNamespacedCustomObjectStatusGET/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}/status获取分区范围CRD资源对象-状态
listClusterCustomObjectGET /apis/{group}/{version}/{plural}集群范围CRD资源对象列表
listNamespacedCustomObjectGET /apis/{group}/{version}/namespaces/{namespace}/{plural}分区范围CRD资源对象列表
patchClusterCustomObjectPATCH /apis/{group}/{version}/{plural}/{name}更新集群范围CRD资源对象
patchClusterCustomObjectScalePATCH /apis/{group}/{version}/{plural}/{name}/scale更新集群范围CRD资源对象-scale
patchClusterCustomObjectStatusPATCH /apis/{group}/{version}/{plural}/{name}/status更新集群范围CRD资源对象-状态
patchNamespacedCustomObjectPATCH/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}更新分区范围CRD资源对象
patchNamespacedCustomObjectScalePATCH/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}/scale更新分区范围CRD资源对象-scale
patchNamespacedCustomObjectStatusPATCH/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}/status更新分区范围CRD资源对象-状态
replaceClusterCustomObjectPUT /apis/{group}/{version}/{plural}/{name}替换集群范围CRD资源对象
replaceClusterCustomObjectScalePUT /apis/{group}/{version}/{plural}/{name}/scale替换集群范围CRD资源对象-scale
replaceClusterCustomObjectStatusPUT /apis/{group}/{version}/{plural}/{name}/status替换集群范围CRD资源对象-状态
replaceNamespacedCustomObjectPUT /apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}替换分区范围CRD资源对象
replaceNamespacedCustomObjectScalePUT/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}/scale替换分区范围CRD资源对象-scale
replaceNamespacedCustomObjectStatusPUT/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}/status替换分区范围CRD资源对象-状态

操作示例

简要描述:

请求方式:

  • GET

请求URL:

  • /apis/{group}/{version}/{plural}

请求URL示例:

  • /apis/flycloud.cn/v1/clusters

请求java示例:

        CustomObjectsApi apiInstance = new CustomObjectsApi();
        String group = "flycloud.cn"; 
        String version = "v1";
        String plural = "clusters";
        String pretty = "ture";
        try {
            Object result = apiInstance.listClusterCustomObject(group,version,plural,pretty,null,null,null,null);
            String listCluster = JSON.toJSONString(result);
            System.out.println(listCluster);
        } catch (ApiException e) {
            System.err.println("Exception when calling CustomObjectsApi#listClusterCustomObject");
            e.printStackTrace();
        }

返回结果:

 {
	"apiVersion": "flycloud.cn/v1",
	"items": [{
		"apiVersion": "flycloud.cn/v1",
		"kind": "Cluster",
		"metadata": {
			"annotations": {
				"name": "top"
			},
			"creationTimestamp": "2019-08-12T07:03:23Z",
			"generation": 1.0,
			"labels": {
				"template": "platform"
			},
			"name": "top",
			"namespace": "cluster-top",
			"resourceVersion": "277020",
			"selfLink": "/apis/flycloud.cn/v1/namespaces/cluster-top/clusters/top",
			"uid": "46528941-bccf-11e9-bfeb-005056bc7cff"
		},
		"spec": {
			"info": {
				"address": "192.168.103.60",
				"harbor": {
					"address": "192.168.103.65",
					"password": "123456",
					"port": 443.0,
					"protocol": "https",
					"user": "admin"
				},
				"jenkins": {
					"password": "admin",
					"type": "jenkins",
					"username": "admin"
				},
				"mysql": {
					"connectionProperties": "druid.stat.mergeSql=true druid.stat.slowSqlMillis=5000",
					"driverClass": "com.mysql.jdbc.Driver",
					"filters": "stat",
					"initialSize": 0.0,
					"logAbandoned": true,
					"maxActive": 100.0,
					"maxOpenPreparedStatements": 50.0,
					"maxWait": 60000.0,
					"minIdle": 0.0,
					"minPoolSize": 2.0,
					"password": "123456",
					"poolPreparedStatements": false,
					"removeAbandoned": true,
					"removeAbandonedTimeout": 900.0,
					"type": "api-mysql",
					"username": "root"
				},
				"network": {
					"networkFlag": "calico",
					"version": 1.0
				},
				"nfs": [{
					"capacity": "1",
					"ip": "192.168.103.65",
					"name": "nfs",
					"path": "/nfs/top",
					"type": "nfs"
				}],
				"port": 6443.0,
				"prometheusPort": 30003.0,
				"protocol": "https",
				"redis": {
					"maxTotal": 500.0,
					"maxWaitMillis": 15000.0,
					"minIdle": 10.0,
					"password": "123456",
					"testOnBorrow": true,
					"testWhileIdle": true,
					"timeBetweenEvictionRunsMillis": 600000.0,
					"type": "api-redis"
				}
			},
			"template": [{
				"namespace": "kube-system",
				"serviceName": "heapster",
				"servicePort": [{
					"port": 80.0,
					"protocol": "TCP",
					"type": "check"
				}],
				"type": "heapster"
			}, {
				"namespace": "kube-system",
				"serviceName": "influxdb",
				"servicePort": [{
					"port": 80.0,
					"protocol": "TCP",
					"type": "web"
				}, {
					"port": 8086.0,
					"protocol": "TCP",
					"type": "api"
				}],
				"type": "influxdb"
			}, {
				"namespace": "kube-system",
				"serviceName": "elasticsearch-logging-v1",
				"servicePort": [{
					"port": 9200.0,
					"protocol": "TCP",
					"type": "web"
				}, {
					"port": 9300.0,
					"protocol": "TCP",
					"type": "api"
				}],
				"type": "es"
			}, {
				"namespace": "kube-system",
				"serviceName": "oam-api-service",
				"servicePort": [{
					"port": 8081.0,
					"protocol": "TCP",
					"type": "api"
				}],
				"type": "oam-api"
			}, {
				"namespace": "kube-system",
				"serviceName": "oam-task-service",
				"type": "oma-task"
			}, {
				"namespace": "kube-system",
				"serviceName": "webapi-service",
				"servicePort": [{
					"port": 8080.0,
					"protocol": "TCP",
					"type": "api"
				}],
				"type": "webapi"
			}, {
				"namespace": "kube-system",
				"serviceName": "webpage-service",
				"servicePort": [{
					"port": 8887.0,
					"protocol": "TCP",
					"type": "web"
				}],
				"type": "webpage"
			}, {
				"namespace": "kube-system",
				"serviceName": "terminal-service",
				"servicePort": [{
					"port": 8888.0,
					"protocol": "TCP",
					"type": "api"
				}],
				"type": "terminal"
			}, {
				"namespace": "kube-system",
				"serviceName": "api-mysql-service",
				"servicePort": [{
					"nodePort": 30306.0,
					"port": 3306.0,
					"protocol": "TCP",
					"type": "api"
				}],
				"type": "api-mysql"
			}, {
				"namespace": "kube-system",
				"serviceName": "api-redis-service",
				"servicePort": [{
					"nodePort": 30379.0,
					"port": 6379.0,
					"protocol": "TCP",
					"type": "api"
				}],
				"type": "api-redis"
			}, {
				"namespace": "kube-system",
				"serviceName": "jenkins",
				"servicePort": [{
					"nodePort": 30080.0,
					"port": 8080.0,
					"protocol": "TCP",
					"type": "api"
				}],
				"type": "jenkins"
			}, {
				"namespace": "kube-system",
				"serviceName": "nfs-controller",
				"type": "nfs-controller"
			}, {
				"namespace": "kube-system",
				"serviceName": "auto-scale",
				"type": "auto-scale"
			}, {
				"namespace": "kube-system",
				"serviceName": "node-up-down",
				"type": "node-up-down"
			}, {
				"namespace": "kube-system",
				"serviceName": "calico-node",
				"type": "calico-node"
			}, {
				"namespace": "kube-system",
				"serviceName": "calico-kube-controller",
				"type": "calico-cotnroller"
			}, {
				"namespace": "kube-system",
				"serviceName": "kube-apiserver",
				"type": "kube-apiserver"
			}, {
				"namespace": "kube-system",
				"serviceName": "kube-controller-manager",
				"type": "kube-controller-manager"
			}, {
				"namespace": "kube-system",
				"serviceName": "kube-scheduler",
				"type": "kube-scheduler"
			}, {
				"namespace": "kube-system",
				"serviceName": "kube-proxy",
				"type": "kube-proxy"
			}, {
				"namespace": "kube-system",
				"serviceName": "etcd",
				"type": "etcd"
			}, {
				"namespace": "kube-system",
				"serviceName": "cluster-controller",
				"type": "cluster-controller"
			}, {
				"namespace": "kube-system",
				"serviceName": "kube-dns",
				"servicePort": [{
					"port": 53.0,
					"protocol": "TCP",
					"type": "check"
				}, {
					"port": 53.0,
					"protocol": "UDP",
					"type": "dns"
				}],
				"type": "kube-dns"
			}]
		},
		"status": {
			"conditions": [{
				"status": false,
				"type": "Ready"
			}]
		}
	}, {
		"apiVersion": "flycloud.cn/v1",
		"kind": "Cluster",
		"metadata": {
			"annotations": {
				"name": "test"
			},
			"creationTimestamp": "2019-09-13T15:54:57Z",
			"generation": 1.0,
			"labels": {
				"template": "dev"
			},
			"name": "test",
			"namespace": "flycloud",
			"resourceVersion": "7687403",
			"selfLink": "/apis/flycloud.cn/v1/namespaces/flycloud/clusters/test",
			"uid": "d5bddb21-d63e-11e9-b5a7-005056bc7cff"
		},
		"spec": {
			"info": {
				"address": "192.168.103.60",
				"domain": [],
				"external": [{
					"labels": {
						"lb": "nginx"
					},
					"maxPort": 35000.0,
					"minPort": 33000.0,
					"tcpConfig": "system-expose-nginx-config-tcp",
					"topLb": "192.168.103.61",
					"type": "nginx",
					"udpConfig": "system-expose-nginx-config-udp"
				}],
				"harbor": {
					"address": "192.168.103.59",
					"password": "Harbor12345",
					"port": 443.0,
					"protocol": "https",
					"user": "admin"
				},
				"network": {
					"networkFlag": "calico",
					"version": "1"
				},
				"nfs": [{
					"capacity": "1",
					"ip": "192.168.103.65",
					"name": "nfs",
					"path": "/nfs/top",
					"type": "nfs"
				}],
				"port": 6443.0,
				"prometheusPort": 30003.0,
				"protocol": "https",
				"storages": []
			},
			"template": [{
				"namespace": "kube-system",
				"serviceName": "auto-scale",
				"type": "auto-scale"
			}, {
				"namespace": "kube-system",
				"serviceName": "calico-kube-controller",
				"type": "calico-cotnroller"
			}, {
				"namespace": "kube-system",
				"serviceName": "calico-node",
				"type": "calico-node"
			}, {
				"namespace": "kube-system",
				"serviceName": "default-http-backend",
				"servicePort": [{
					"port": 80.0,
					"protocol": "TCP",
					"type": "web"
				}],
				"type": "default-http-backend"
			}, {
				"namespace": "kube-system",
				"serviceName": "elasticsearch-logging-v1",
				"servicePort": [{
					"port": 9200.0,
					"protocol": "TCP",
					"type": "web"
				}, {
					"port": 9300.0,
					"protocol": "TCP",
					"type": "api"
				}],
				"type": "es"
			}, {
				"namespace": "kube-system",
				"serviceName": "etcd",
				"type": "etcd"
			}, {
				"namespace": "kube-system",
				"serviceName": "heapster",
				"servicePort": [{
					"port": 80.0,
					"protocol": "TCP",
					"type": "check"
				}],
				"type": "heapster"
			}, {
				"namespace": "kube-system",
				"serviceName": "influxdb",
				"servicePort": [{
					"port": 80.0,
					"protocol": "TCP",
					"type": "web"
				}, {
					"port": 8086.0,
					"protocol": "TCP",
					"type": "api"
				}],
				"type": "influxdb"
			}, {
				"namespace": "kube-system",
				"serviceName": "kube-apiserver",
				"type": "kube-apiserver"
			}, {
				"namespace": "kube-system",
				"serviceName": "kube-controller-manager",
				"type": "kube-controller-manager"
			}, {
				"namespace": "kube-system",
				"serviceName": "kube-dns",
				"servicePort": [{
					"port": 54.0,
					"protocol": "TCP",
					"type": "check"
				}, {
					"port": 53.0,
					"protocol": "UDP",
					"type": "dns"
				}],
				"type": "kube-dns"
			}, {
				"namespace": "kube-system",
				"serviceName": "kube-proxy",
				"type": "kube-proxy"
			}, {
				"namespace": "kube-system",
				"serviceName": "kube-scheduler",
				"type": "kube-scheduler"
			}, {
				"namespace": "kube-system",
				"serviceName": "nfs-controller",
				"type": "nfs-controller"
			}, {
				"namespace": "kube-system",
				"serviceName": "nginx-controller",
				"servicePort": [{
					"port": 80.0,
					"protocol": "TCP",
					"type": "web"
				}],
				"type": "nginx-controller"
			}, {
				"namespace": "kube-system",
				"serviceName": "node-up-down",
				"type": "node-up-down"
			}, {
				"namespace": "kube-system",
				"serviceName": "oam-api-service",
				"servicePort": [{
					"port": 8081.0,
					"protocol": "TCP",
					"type": "api"
				}],
				"type": "oam-api"
			}, {
				"namespace": "kube-system",
				"serviceName": "oam-task-service",
				"type": "oma-task"
			}, {
				"namespace": "kube-system",
				"serviceName": "terminal-service",
				"servicePort": [{
					"port": 8888.0,
					"protocol": "TCP",
					"type": "api"
				}],
				"type": "terminal"
			}]
		},
		"status": {
			"conditions": [{
				"status": true,
				"type": "Ready"
			}]
		}
	}],
	"kind": "ClusterList",
	"metadata": {
		"continue": "",
		"resourceVersion": "7758294",
		"selfLink": "/apis/flycloud.cn/v1/clusters"
	}
}

Namespaces增删改查

使用 CoreV1Api apiInstance = new CoreV1Api(); 操作

MethodHTTP requestDescription
createNamespacePOST /api/v1/namespaces创建分区
deleteNamespaceDELETE/api/v1/namespaces/{name}删除分区
listNamespaceGET /api/v1/namespaces分区列表
patchNamespacePATCH/api/v1/namespaces/{name}更新分区内容
readNamespaceGET/api/v1/namespaces/{name}查询指定分区详情
replaceNamespacePUT/api/v1/namespaces/{name}替换分区内容

Node增删改查

使用 CoreV1Api apiInstance = new CoreV1Api(); 操作

MethodHTTP requestDescription
createNodePOST /api/v1/nodes创建节点
deleteCollectionNodeDELETE /api/v1/nodes删除多个节点
deleteNodeDELETE/api/v1/nodes/{name}删除节点
listNodeGET /api/v1/nodes节点列表
patchNodePATCH/api/v1/nodes/{name}更新节点
readNodeGET /api/v1/nodes/{name}查询指定节点
replaceNodePUT /api/v1/nodes/{name}替换指定节点内容
replaceNodeStatusPUT/api/v1/nodes/{name}/status修改节点状态

Pod增删改查

使用 CoreV1Api apiInstance = new CoreV1Api(); 操作

MethodHTTP requestDescription
createNamespacedPodPOST /api/v1/namespaces/{namespace}/pods创建pod
deleteCollectionNamespacedPodDELETE/api/v1/namespaces/{namespace}/pods删除多个pod
deleteNamespacedPodDELETE/api/v1/namespaces/{namespace}/pods/{name}删除pod
listNamespacedPodGET /api/v1/namespaces/{namespace}/podspod列表
patchNamespacedPodPATCH/api/v1/namespaces/{namespace}/pods/{name}更新pod
readNamespacedPodGET/api/v1/namespaces/{namespace}/pods/{name}查询指定pod
replaceNamespacedPodPUT/api/v1/namespaces/{namespace}/pods/{name}替换指定pod内容

优先级

MethodHTTP requestDescription
createPriorityClassPOST /apis/scheduling.k8s.io/v1beta1/priorityclasses创建优先级
deleteCollectionPriorityClassDELETE /apis/scheduling.k8s.io/v1beta1/priorityclasses删除多个优先级
deletePriorityClassDELETE /apis/scheduling.k8s.io/v1beta1/priorityclasses/{name}删除优先级
getAPIResourcesGET /apis/scheduling.k8s.io/v1beta1/获取可用资源
listPriorityClassGET /apis/scheduling.k8s.io/v1beta1/priorityclasses优先级列表
patchPriorityClassPATCH /apis/scheduling.k8s.io/v1beta1/priorityclasses/{name}修改优先级
readPriorityClassGET /apis/scheduling.k8s.io/v1beta1/priorityclasses/{name}查询指定优先级
replacePriorityClassPUT /apis/scheduling.k8s.io/v1beta1/priorityclasses/{name}替换优先级

Services增删改查

使用 CoreV1Api apiInstance = new CoreV1Api(); 操作

MethodHTTP requestDescription
createNamespacedServicePOST /api/v1/namespaces/{namespace}/services创建服务
deleteNamespacedServiceDELETE/api/v1/namespaces/{namespace}/services/{name}删除服务
listNamespacedServiceGET /api/v1/namespaces/{namespace}/services服务列表
patchNamespacedServicePATCH/api/v1/namespaces/{namespace}/services/{name}修改指定服务内容
readNamespacedServiceGET/api/v1/namespaces/{namespace}/services/{name}查询指定服务内容
replaceNamespacedServicePUT/api/v1/namespaces/{namespace}/services/{name}替换指定服务内容

操作示例

@Test
    public void CoreV1ApiTest(){

        CoreV1Api apiInstance = new CoreV1Api();
        String pretty = "true"; // String | If 'true', then the output is pretty printed.
        String _continue = "_continue_example"; // String | The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".  This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.
        String fieldSelector = "fieldSelector_example"; // String | A selector to restrict the list of returned objects by their fields. Defaults to everything.
        String labelSelector = "labelSelector_example"; // String | A selector to restrict the list of returned objects by their labels. Defaults to everything.
        Integer limit = 56; // Integer | limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.  The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.
        String resourceVersion = "resourceVersion_example"; // String | When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.
        Integer timeoutSeconds = 56; // Integer | Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.
        Boolean watch = true; // Boolean | Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
        try {

            // Namespace列表
            V1NamespaceList result = apiInstance.listNamespace(null,pretty,null,null,null,null,null,null,null);

            // Node列表
            // V1NodeList result = apiInstance.listNode(null,pretty,null,null,null,null,null,null,null);

           // Service列表
            // V1ServiceList result = apiInstance.listNamespacedService("kube-system", null, null, null, null, null, null, null, null, null);

            // Service 详情
            // /api/v1/namespaces/kube-system/services/webapi-service
            // V1Service result = apiInstance.readNamespacedService("flyapi-service", "kube-system", null, null, null);

            System.out.println(result);

            // JSON
            Gson gson=new Gson();
            String s = gson.toJson(result);
            System.out.println(s);

        } catch (ApiException e) {
            System.err.println("Exception when calling CoreV1Api#listNode");
            e.printStackTrace();
        }
    }

Deployment增删改查

使用 ExtensionsV1beta1Api apiInstance = new ExtensionsV1beta1Api(); 操作

MethodHTTP requestDescription
createNamespacedDeploymentPOST /apis/extensions/v1beta1/namespaces/{namespace}/deployments创建应用
deleteCollectionNamespacedDeploymentDELETE/apis/extensions/v1beta1/namespaces/{namespace}/deployments删除多个应用
deleteNamespacedDeploymentDELETE/apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}删除应用
listNamespacedDeploymentGET /apis/extensions/v1beta1/namespaces/{namespace}/deployments应用列表
patchNamespacedDeploymentPATCH/apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}更新应用
readNamespacedDeploymentGET/apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}查询指定应用
replaceNamespacedDeploymentPUT/apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}替换指定应用内容

kubernetes-client/java 使用注意(很重要):

  1.  Kubernetes资源内容查询:JSONPath

  2.  kubernetes-client: delete操作异常 Expected a string but was BEGIN_OBJECT at line 1 column 1912

  3.  kubernetes:CPU 和内存单位解释

  4.  kubenetes: patch更新和替换、删除资源内容

  5. kubernetes:字段选择器(field-selector)标签选择器(labels-selector)和筛选 Kubernetes 资源

  6. Kubernetes参数:dryRun理解

  7. kubernetes-client/java:Scale报错400 BadRequest 或 500 cannot unmarshal object

  8. Kubectl :--v 接口调试,以及设置日志输出详细程度

课程分享:

  1. 课程分享:Docker+Kubernetes(k8s)微服务容器化实践
  2. 课程分享:Kubernetes(k8s)生产级实践指南 从部署到核心应用

  3. 课程分享:(极客时间)深入剖析Kubernetes

参考链接:

https://k8smeetup.github.io/docs/reference/client-libraries/

https://feisky.gitbooks.io/kubernetes/components/apiserver.html

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.13/

打赏
文章很值,打赏犒劳作者一下
<p style="margin: 21px 0 21px 0;"><span style="color: red; font-size: 24px;">微服务是什么?</span></p> <p>微服务是用于构建应用程序的架构风格,一个大的系统可由一个或者多个微服务组成,微服务架构可将应用拆分成多个核心功能,每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作和出现故障的时候不会相互影响。</p> <p style="margin: 21px 0 21px 0;"><span style="color: red; font-size: 24px;">为什么要用微服务?</span></p> <p style="text-align: left;">单体架构下的所有代码模块都耦合在一起,代码量大,维护困难,想要更新一个模块的代码,也可能会影响其他模块,不能很好的定制化代码。微服务中可以有java编写、有Python编写的,他们都是靠restful架构风格统一成一个系统的,所以微服务本身与具体技术无关、扩展性强。</p> <p style="margin: 21px 0 21px 0;"><span style="color: red; font-size: 24px;">大型电商平台微服务功能图</span></p> <p style="margin: 21px 0 21px 0;"><img src="https://img-bss.csdnimg.cn/202102041151592091.png" alt="" /></p> <p style="margin: 21px 0 21px 0;"><span style="color: red; font-size: 24px;">为什么要将SpringCloud项目部署到k8s平台?</span></p> <p>SpringCloud只能用在SpringBoot的java环境中,而kubernetes可以适用于任何开发语言,只要能被放进docker的应用,都可以在kubernetes上运行,而且更轻量,更简单。SpringCloud很多功能都跟kubernetes重合,比如服务发现,负载均衡,配置管理,所以如果把SpringCloud部署到k8s,那么很多功能可以直接使用k8s原生的,减少复杂度。</p> <p style="margin: 16px 0 16px 0;"><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">Kubernetes</span><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">作为成熟的容器编排工具,在国内外很多公司、世界500强等企业已经落地使用,很多中小型公司也开始把业务迁移到kubernetes中。kubernetes已经成为互联网行业急需的人才,很多企业都开始引进kubernetes技术人员,实现其内部的自动化容器云平台的建设。对于开发、测试、运维、架构师等技术人员来说k8s已经成为的一项重要的技能,下面列举了国内外在生产环境使用kubernetes的公司:</span></p> <p style="margin: 16px 0 16px 0;"> </p> <p style="margin: 16px 0 16px 0;"><strong><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">国内在用k8s的公司:</span></strong></p> <p style="margin: 16px 0 16px 0;"><span style="font-family: '微软雅黑',sans-serif;">阿里巴巴、百度、腾讯、京东、360、新浪、头条、知乎、华为、小米、富士康、移动、银行、电网、阿里云、青云、时速云、腾讯、优酷、抖音、快手、美团等</span></p> <p style="margin: 16px 0 16px 0;"><strong><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">国外在用k8s的公司:</span></strong></p> <p style="margin: 16px 0 16px 0;"><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">谷歌、IBM、丰田、iphone、微软、redhat等<br /></span><img src="https://img-bss.csdnimg.cn/202102041152363812.png" alt="" /></p> <p style="margin: 21px 0 21px 0;"><br />整个K8S体系涉及到的技术众多,包括存储、网络、安全、监控、日志、DevOps、微服务等,很多刚接触K8S的初学者,都会感到无从下手,为了能让大家系统地学习,克服这些技术难点,推出了这套K8S架构师课程。<br /><br /><span style="color: red; font-size: 24px;">Kubernetes的发展前景</span> <br />kubernetes作为炙手可热的技术,已经成为云计算领域获取高薪要掌握的重要技能,在招聘网站搜索k8s,薪资水平也非常可观,为了让大家能够了解k8s目前的薪资分布情况,下面列举一些K8S的招聘截图: <br /><br /></p> <p style="margin: 21px 0 21px 0;"><img src="https://img-bss.csdnimg.cn/202102041153009482.png" alt="" /></p> <p style="margin: 16px 0 16px 0;"><span style="color: #ff0000;"><strong><span style="font-size: 24px;">讲师介绍:  </span></strong></span><strong><span style="font-size: 24px; font-family: '微软雅黑',sans-serif;">先超</span></strong></p> <p style="margin: 8px 0 8px 0;"><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">容器云架构师、IT技术架构师、<span style="color: red;">DevOps</span><span style="color: red;">工程师</span>,曾<span style="color: red;">就职于世界500强上市公司</span>,拥有多年一线运维经验,主导过上亿流量的pv项目的架构设计和运维工作;具有<span style="color: red;">丰富的在线教育经验</span>,对课程一直在改进和提高、不断的更新和完善、开发更多的企业实战项目。所教<span style="color: red;">学员遍布京东、阿里、百度、电网等</span>大型企业和上市公司。</span></p> <p style="margin: 21px 0 21px 0;"><span style="color: red; font-size: 24px;">课程学习计划</span> <br />学习方式:视频录播+视频回放+全套源码笔记 <br />教学服务:模拟面试、就业指导、岗位内推、一对一答疑、远程指导 <br />VIP终身服务:一次购买,终身学习</p> <p style="margin: 16px 0 16px 0;"><span style="font-size: 24px; color: #ff0000;"><span style="font-size: 24px;">课程亮点:</span></span></p> <p><strong><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">1. </span></strong><strong><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">学习方式灵活,不占用工作时间:</span></strong></p> <p><span style="font-family: '微软雅黑',sans-serif;">可在电脑、手机观看,随时可以学习,不占用上班时间</span></p> <p><strong><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">2.</span></strong><strong><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">老师答疑及时:</span></strong></p> <p><span style="font-family: '微软雅黑',sans-serif;">老师24小时在线答疑</span></p> <p><strong><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">3. </span></strong><strong><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">知识点覆盖全、课程质量高</span></strong></p> <p><strong><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">4. </span></strong><strong><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">精益求精、不断改进</span></strong></p> <p><span style="font-family: '微软雅黑',sans-serif;">根据学员要求、随时更新课程内容</span></p> <p><strong><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">5. </span></strong><strong><span style="font-size: 18px; font-family: '微软雅黑',sans-serif;">适合范围广,不管你是0基础,还是拥有工作经验均可学习:</span></strong></p> <p><span style="font-family: '微软雅黑',sans-serif;">0</span><span style="font-family: '微软雅黑',sans-serif;">基础</span></p> <p><span style="font-family: '微软雅黑',sans-serif;">1-3</span><span style="font-family: '微软雅黑',sans-serif;">年工作经验</span></p> <p><span style="font-family: '微软雅黑',sans-serif;">3-5</span><span style="font-family: '微软雅黑',sans-serif;">年工作经验</span></p> <p><span style="font-family: '微软雅黑',sans-serif;">5</span><span style="font-family: '微软雅黑',sans-serif;">年以上工作经验</span></p> <p><span style="font-family: '微软雅黑',sans-serif;">运维、开发、测试、产品、前端、架构师</span></p> <p><span style="font-family: '微软雅黑',sans-serif;">其他行业转行做技术人员均可学习</span></p> <p><span style="font-family: 等线; color: red; font-size: 24px;">课程部分项目截图</span></p> <p><img src="https://img-bss.csdnimg.cn/202102041153266860.png" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202102041153377287.png" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202102041153463414.png" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202102041153552293.png" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202102041154101988.png" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202102041154234342.png" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202102041154348644.png" alt="" /></p> <p> </p> <p> </p> <p> </p> <p><span style="font-size: 24px; color: #ff0000;">课程大纲</span></p> <p> </p> <table> <tbody> <tr class="firstRow"> <td style="border: 1px solid windowtext; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 18px; font-family: 宋体;">k8s+SpringCloud</span></strong><strong><span style="font-size: 18px; font-family: 宋体;">全栈技术:基于世界500强的企业实战课程-大纲</span></strong></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第一章 开班仪式</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">老师自我介绍、课程大纲介绍、行业背景、发展趋势、市场行情、课程优势、薪资水平、给大家的职业规划、课程学习计划、岗位内推</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第二章 kubernetes介绍</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">Kubernetes</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">简介</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">kubernetes</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">起源和发展</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">kubernetes</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">优点</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">kubernetes</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">功能</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">kubernetes</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">应用领域:在大数据、5G、区块链、DevOps、AI等领域的应用</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第三章  kubernetes中的资源对象</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">最小调度单元Pod</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">标签Label和标签选择器</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">控制器Replicaset、Deployment、Statefulset、Daemonset等</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">四层负载均衡器Service</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第四章 kubernetes架构和组件</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">熟悉谷歌的Borg架构</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">kubernetes</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">单master节点架构</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">kubernetes</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">多master节点高可用架构</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">kubernetes</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">多层架构设计原理</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">kubernetes API</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">介绍</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">master</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">(控制)节点组件:apiserver、scheduler、controller-manager、etcd</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">node</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">(工作)节点组件:kube-proxy、coredns、calico</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">附加组件:prometheus、dashboard、metrics-server、efk、HPA、VPA、Descheduler、Flannel、cAdvisor、Ingress     Controller。</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第五章 部署多master节点的K8S高可用集群(kubeadm)</span></strong></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第六章 带你体验kubernetes可视化界面dashboard</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">在kubernetes中部署dashboard</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">通过token令牌登陆dashboard</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">通过kubeconfig登陆dashboard</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">限制dashboard的用户权限</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">在dashboard界面部署Web服务</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">在dashboard界面部署redis服务</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第七章 资源清单YAML文件编写技巧</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">编写YAML文件常用字段,YAML文件编写技巧,kubectl explain查看帮助命令,手把手教你创建一个Pod的YAML文件</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第八章 通过资源清单YAML文件部署tomcat站点</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">编写tomcat的资源清单YAML文件、创建service发布应用、通过HTTP、HTTPS访问tomcat</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第九章  kubernetes Ingress发布服务</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">Ingress</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">和Ingress Controller概述</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">Ingress</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">和Servcie关系</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">安装Nginx Ingress Controller</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">安装Traefik Ingress Controller</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">使用Ingress发布k8s服务</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">Ingress</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">代理HTTP/HTTPS服务</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">Ingress</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">实现应用的灰度发布-可按百分比、按流量分发</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第十章 私有镜像仓库Harbor安装和配置</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">Harbor</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">简介</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">安装Harbor</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">Harbor UI</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">界面使用</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">上传镜像到Harbor仓库</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">从Harbor仓库下载镜像</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第十一章 微服务概述</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">什么是微服务?</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">为什么要用微服务?</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">微服务的特性</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">什么样的项目适合微服务?</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">使用微服务需要考虑的问题</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">常见的微服务框架</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">常见的微服务框架对比分析</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第十二章 SpringCloud概述</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">SpringCloud</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">是什么?</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">SpringCloud</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">和SpringBoot什么关系?</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">SpringCloud</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">微服务框架的优缺点</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">SpringCloud</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">项目部署到k8s的流程</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第十三章 SpringCloud组件介绍</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">服务注册与发现组件Eureka</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">客户端负载均衡组件Ribbon</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">服务网关Zuul</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">熔断器Hystrix</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">API</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">网关SpringCloud Gateway</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">配置中心SpringCloud Config</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第十四章 将SpringCloud项目部署到k8s平台的注意事项</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">如何进行服务发现?</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">如何进行配置管理?</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">如何进行负载均衡?</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">如何对外发布服务?</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">k8s</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">部署SpringCloud项目的整体流程</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第十五章 部署MySQL数据库</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">MySQL</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">简介</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">MySQL</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">特点</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">安装部署MySQL</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">在MySQL数据库导入数据</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">对MySQL数据库授权</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第十六章 将SpringCLoud项目部署到k8s平台</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">SpringCloud</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">的微服务电商框架</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">安装openjdk和maven</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">修改源代码、更改数据库连接地址</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">通过Maven编译、构建、打包源代码</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">在k8s中部署Eureka组件</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">在k8s中部署Gateway组件</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">在k8s中部署前端服务</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">在k8s中部署订单服务</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">在k8s中部署产品服务</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">在k8s中部署库存服务</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第十七章 微服务的扩容和缩容</span></strong></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第十八章 微服务的全链路监控</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">什么是全链路监控?</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">为什么要进行全链路监控?</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">全链路监控能解决哪些问题?</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">常见的全链路监控工具:zipkin、skywalking、pinpoint</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">全链路监控工具对比分析</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第十九章 部署pinpoint服务</span></strong></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">部署pinpoint</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">部署pinpoint agent</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">在k8s中重新部署带pinpoint agent的产品服务</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">在k8s中重新部署带pinpoint agent的订单服务</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">在k8s中重新部署带pinpoint agent的库存服务</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">在k8s中重新部署带pinpoint agent的前端服务</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">在k8s中重新部署带pinpoint agent的网关和eureka服务</span></p> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">Pinpoint UI</span><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">界面使用</span></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第二十章 基于Jenkins+k8s+harbor等构建企业级DevOps平台</span></strong></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第二十一章 基于Promethues+Alert+Grafana搭建企业级监控系统</span></strong></p> </td> </tr> <tr> <td style="border-color: currentcolor windowtext windowtext; border-style: none solid solid; border-width: medium 1px 1px; border-image: none 100% / 1 / 0 stretch; padding: 0px 7px; word-break: break-all;" valign="top" width="553"> <p style="margin-top: auto; margin-bottom: auto; text-align: left;"><strong><span style="font-size: 16px; font-family: '微软雅黑',sans-serif;">第二十二章 部署智能化日志收集系统EFK</span></strong></p> </td> </tr> </tbody> </table> <p><span style="font-size: 24px; color: #ff0000;"> </span></p>
相关推荐
<div style="font-size:14px;"> 课程简介 </div> <div style="font-size:14px;"> 这是一门使用Java语言,SpringBoot框架,从0开发一个RESTful API应用,接近企业级的项目(我的云音乐),课程包含了基础内容,高级内容,项目封装,项目重构等知识,99%代码为手写;因为这是项目课程;所以不会深入到源码讲解某个知识点,以及原理,但会粗略的讲解下基础原理;主要是讲解如何使用系统功能,流行的第三方框架,第三方服务,完成接近企业级项目,目的是让大家,学到真正的企业级项目开发技术。 </div> <div style="font-size:14px;"> <br /> </div> <div style="font-size:14px;"> 适用人群 </div> <div style="font-size:14px;"> 刚刚毕业的学生 </div> <div style="font-size:14px;"> 想提高职场竞争力 </div> <div style="font-size:14px;"> 想学从零开发SpringBoot项目 </div> <div style="font-size:14px;"> 想提升SpringBoot项目开发技术 </div> <div style="font-size:14px;"> 想学习SpringBoot项目架构技术 </div> <div style="font-size:14px;"> 想学习企业级项目开发技术 </div> <div style="font-size:14px;"> 就是想学习SpringBoot开发 </div> <div style="font-size:14px;"> <br /> </div> <div style="font-size:14px;"> 能学到什么 </div> <div style="font-size:14px;"> 从0开发一个类似企业级项目 </div> <div style="font-size:14px;"> 学会能做出市面上90%通用API </div> <div style="font-size:14px;"> 快速增加1到2年实际开发经验 </div> <div style="font-size:14px;"> 刚毕业学完后能找到满意的工作 </div> <p style="font-size:14px;"> 已经工作学完后最高涨薪30% </p> <p style="font-size:14px;"> <br /> </p> <p style="font-size:14px;"> <br /> </p> <div style="font-size:14px;"> 课程信息 </div> <div style="font-size:14px;"> 全课程目前是82章,155小时,每节视频都经过精心剪辑。 </div> <p style="font-size:14px;"> 在线学习分辨率最高1080P </p> <p style="font-size:14px;"> <br /> </p> <p style="font-size:14px;"> <br /> </p> <div style="font-size:14px;"> 课程知识点 </div> <div style="font-size:14px;"> 1~11章:学习方法,项目架构,编码规范,Postman使用方法,Git和Github版本控制 </div> <div style="font-size:14px;"> 12~16章:搭建开发环境,快速入门SpringBoot框架 </div> <div style="font-size:14px;"> 17~20章:快速入门MySQL数据库 </div> <div style="font-size:14px;"> 21~30章:MyBatis,登录注册,找回密码,发送短信,发送邮件,企业级接口配置 </div> <div style="font-size:14px;"> 31~41章:实现歌单,歌单标签,音乐,列表分页,视频,评论,好友功能 </div> <div style="font-size:14px;"> 42~48章:阿里云OSS,话题,MyBatis-plus,应用监控 </div> <div style="font-size:14px;"> 49~53章:Redis使用,集成Redis,SpringCache,HTTP缓存 </div> <div style="font-size:14px;"> 54~58章:Elasticsearch使用,集成Elasticsearch,使用ES搜索 </div> <div style="font-size:14px;"> 59~61章:商城,集成支付宝SDK,支付宝支付 </div> <div style="font-size:14px;"> 62~64章:常用哈希和加密算法,接口加密和签名 </div> <div style="font-size:14px;"> 65~67章:实时挤掉用户,企业级项目测试环境,企业级接口文档 </div> <div style="font-size:14px;"> 68~69章:SpringBoot全站HTTPS,自签证书,申请免费证书 </div> <div style="font-size:14px;"> 70~73章:云MySQL数据库,云Redis数据库使用,轻量级应用部署环境,域名解析 </div> <div style="font-size:14px;"> 74~80章:Docker使用,生产级Kubernetes集群,域名解析,集群全站HTTPS </div> <div style="font-size:14px;"> 81~82章:增强和重构项目,课程总结,后续学习计划 </div>
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页

打赏

琦彦

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值