我有一个非常简单的springboot
Helloworld应用程序,它显示Helloworld
REST
API
编码>消息。
我想在安装了MicroK8s的Ubuntu节点上部署该应用程序。
步骤如下:
我能够使用构建该图像/mvnw k8s:build
命令,也可以使用docker images
命令查看映像,但无法使用将其部署到
和MicroK8s
集群上/mvnw k8s:资源/mvnw k8s:部署
命令
波姆。xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>helloworld</artifactId>
<version>0.0.2-SNAPSHOT</version>
<name>helloworld</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
<spring-boot.build-image.imageName>chandeln/${project.artifactId}:${project.version}</spring-boot.build-image.imageName>
<jkube.generator.name>${spring-boot.build-image.imageName}</jkube.generator.name>
<docker.skip.tag>true</docker.skip.tag>
<jkube.enricher.jkube-service.type>NodePort</jkube.enricher.jkube-service.type>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>kubernetes-maven-plugin</artifactId>
<version>1.0.2</version>
</plugin>
</plugins>
</build>
</project>
HelloworldController。JAVA
@RestController
public class HelloworldController {
@GetMapping("/")
public String hello() {
return "Hello World!";
}
}
在我的Ubuntu
机器上安装了MicroK8s
。
microk8s状态—等待就绪
microk8s is running
high-availability: no
datastore master nodes: <my-ubuntu-machine-public-ip>:19001
datastore standby nodes: none
addons:
enabled:
dashboard # The Kubernetes dashboard
dns # CoreDNS
ha-cluster # Configure high availability on the current node
ingress # Ingress controller for external access
metrics-server # K8s Metrics Server for API access to service metrics
disabled:
ambassador # Ambassador API Gateway and Ingress
cilium # SDN, fast with full network policy
fluentd # Elasticsearch-Fluentd-Kibana logging and monitoring
gpu # Automatic enablement of Nvidia CUDA
helm # Helm 2 - the package manager for Kubernetes
helm3 # Helm 3 - Kubernetes package manager
host-access # Allow Pods connecting to Host services smoothly
istio # Core Istio service mesh services
jaeger # Kubernetes Jaeger operator with its simple config
knative # The Knative framework on Kubernetes.
kubeflow # Kubeflow for easy ML deployments
linkerd # Linkerd is a service mesh for Kubernetes and other frameworks
metallb # Loadbalancer for your Kubernetes cluster
multus # Multus CNI enables attaching multiple network interfaces to pods
prometheus # Prometheus operator for monitoring and logging
rbac # Role-Based Access Control for authorisation
registry # Private image registry exposed on localhost:32000
storage # Storage class; allocates storage from host directory
群集信息
Kubernetes master is running at https://127.0.0.1:16443
Metrics-server is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
CoreDNS is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
kubectl获得全部
NAME READY STATUS RESTARTS AGE
pod/microbot-5f5499d479-t2cdz 1/1 Running 1 31d
pod/microbot-5f5499d479-r6d57 1/1 Running 3 31d
pod/microbot-5f5499d479-7zztm 1/1 Running 3 31d
pod/nginx-6799fc88d8-9sf5j 1/1 Running 5 31d
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 31d
service/microbot-service NodePort 10.152.183.184 <none> 81:31587/TCP 31d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/microbot 3/3 3 3 31d
deployment.apps/nginx 1/1 1 1 31d
NAME DESIRED CURRENT READY AGE
replicaset.apps/microbot-5f5499d479 3 3 3 31d
replicaset.apps/nginx-6799fc88d8 1 1 1 31d
./mvnw k8s:构建
Docker镜像构建成功。见下文。
docker图像
REPOSITORY TAG IMAGE ID CREATED SIZE
chandeln/helloworld 0.0.2-SNAPSHOT dc061ea2b469 17 minutes ago 509MB
chandeln/helloworld latest dc061ea2b469 17 minutes ago 509MB
./mvnw k8s:资源
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< com.example:helloworld >-----------------------
[INFO] Building helloworld 0.0.2-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.2:resource (default-cli) @ helloworld ---
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
[WARNING] k8s: Cannot access cluster for detecting mode: Unknown host kubernetes.default.svc: Name or service not known
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
[INFO] k8s: Running generator spring-boot
[INFO] k8s: spring-boot: Using Docker image quay.io/jkube/jkube-java-binary-s2i:0.0.8 as base / builder
[INFO] k8s: Using resource templates from /home/admin/apps/helloworld/src/main/jkube
[INFO] k8s: jkube-controller: Adding a default Deployment
[INFO] k8s: jkube-service: Adding a default service 'helloworld' with ports [8080]
[INFO] k8s: jkube-healthcheck-spring-boot: Adding readiness probe on port 8080, path='/actuator/health', scheme='HTTP', with initial delay 10 seconds
[INFO] k8s: jkube-healthcheck-spring-boot: Adding liveness probe on port 8080, path='/actuator/health', scheme='HTTP', with initial delay 180 seconds
[INFO] k8s: jkube-revision-history: Adding revision history limit to 2
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.701 s
[INFO] Finished at: 2020-12-24T03:01:08Z
[INFO] ------------------------------------------------------------------------
./mvnw k8s:部署
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.3.RELEASE)
2020-12-24 03:18:13.492 INFO 1828768 --- [ main] c.e.h.HelloworldApplicationTests : Starting HelloworldApplicationTests on tools-server.kanaaritech.com with PID 1828768 (started by admin in /home/admin/apps/helloworld)
2020-12-24 03:18:13.494 INFO 1828768 --- [ main] c.e.h.HelloworldApplicationTests : The following profiles are active: tools
2020-12-24 03:18:24.499 INFO 1828768 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-12-24 03:18:27.959 INFO 1828768 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoint(s) beneath base path '/actuator'
2020-12-24 03:18:28.684 INFO 1828768 --- [ main] c.e.h.HelloworldApplicationTests : Started HelloworldApplicationTests in 15.912 seconds (JVM running for 18.923)
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 20.012 s - in com.example.helloworld.HelloworldApplicationTests
2020-12-24 03:18:31.927 INFO 1828768 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO]
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ helloworld ---
[INFO] Building jar: /home/admin/apps/helloworld/target/helloworld-0.0.2-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.3.3.RELEASE:repackage (repackage) @ helloworld ---
[INFO] Replacing main artifact with repackaged archive
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ helloworld ---
[INFO] Installing /home/admin/apps/helloworld/target/helloworld-0.0.2-SNAPSHOT.jar to /home/admin/.m2/repository/com/example/helloworld/0.0.2-SNAPSHOT/helloworld-0.0.2-SNAPSHOT.jar
[INFO] Installing /home/admin/apps/helloworld/pom.xml to /home/admin/.m2/repository/com/example/helloworld/0.0.2-SNAPSHOT/helloworld-0.0.2-SNAPSHOT.pom
[INFO]
[INFO] <<< kubernetes-maven-plugin:1.0.2:deploy (default-cli) < install @ helloworld <<<
[INFO]
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.2:deploy (default-cli) @ helloworld ---
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
[WARNING] k8s: Cannot access cluster for detecting mode: Unknown host kubernetes.default.svc: Name or service not known
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
[WARNING] k8s: Cannot access cluster for detecting mode: Unknown host kubernetes.default.svc
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
[ERROR] k8s: Could not connect to kubernetes cluster!
[ERROR] k8s: Connection error: %s: java.net.UnknownHostException: kubernetes.default.svc
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 38.670 s
[INFO] Finished at: 2020-12-24T03:18:42Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.eclipse.jkube:kubernetes-maven-plugin:1.0.2:deploy (default-cli) on project helloworld: Execution default-cli of goal org.eclipse.jkube:kubernetes-maven-plugin:1.0.2:deploy failed: Could not connect to kubernetes cluster. Have you started a cluster via `mvn jkube:cluster-start` or connected to a remote cluster via `kubectl`? Error: java.net.UnknownHostException: kubernetes.default.svc: An error has occurred. Unknown host kubernetes.default.svc -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
关于EclipseJkube(Jib插件的继承者)插件的信息可以在这里找到。
https://www.eclipse.org/jkube/docs/kubernetes-maven-plugin
MicroK8s有自己的kubectl
打包版本,默认情况下可通过MicroK8s访问,包括其配置。
microk8s kubectl
为了让JKube了解您的MicroK8s集群,您需要导出配置microk8s config
并将其放在kubeconfig文件~/中。库贝配置
cd $HOME
mkdir .kube
cd .kube
microk8s config > config
参考:https://microk8s.io/docs/working-with-kubectl
我创建了两个java web应用程序,一个使用mysql,另一个使用oracle。我在glassfish4.0服务器中部署了这些应用程序,并且工作正常。然后,我在服务器中创建集群,其中1个实例位于本地节点,1个实例来自远程节点。该集群和实例成功运行 然后我将应用程序部署到集群,当我在浏览器中运行web时, 应用程序使用mysql显示错误“类名错误或未为com.mysql.jdbc.jdbc2.op
本文向大家介绍使用Kubeadm在CentOS7.2上部署Kubernetes集群的方法,包括了使用Kubeadm在CentOS7.2上部署Kubernetes集群的方法的使用技巧和注意事项,需要的朋友参考一下 本文参考kubernetes官网文章Installing Kubernetes on Linux with kubeadm在CentOS7.2使用Kubeadm部署Kuebernetes集
我无法在Tomcat 6上部署Grails 2.2.4应用程序。我尝试了新安装的tomcat,甚至我的应用程序的旧版本(以前运行过)。 此异常在一分钟后引发。在tomcat启动后: 我真的不知道从哪里开始修理它-/
已经使用helm chart成功部署了一个应用程序,但我无法理解应该使用哪个url访问它。。以下是Helm为此web应用程序创建的Nodeport服务:
我试图将spring boot应用程序部署到外部tomcat,在catalina.log文件中出现如下异常。 war文件名为:com#myapp.war。
Mesosphere在简化Mesos上运行Spark的过程方面做了很大的工作。我正在使用本指南在Google Cloud Compute上建立一个开发Mesos集群。 https://mesosphere.com/docs/tutorials/run-spark-on-mesos/ 我可以使用运行指南中的示例(查找小于10的数字)。但是,当我试图在本地提交一个与Spark一起正常工作的应用程序时,