Step1:在CentOS7中完成使用YUM安装etcd和kubernetes并关闭防火墙
第二步:修改/etc/sysconfig/docker中的相关配置项
OPTIONS = '-selinux-enabled = false-unsecured-registry gcr . io '
Step3:修改 /etc/kubernetes/apiserver中的相关配置项
去除
服务帐户
在KUBE _准入_控制配置项中
第四步:启动etcd和kubernetes的所有相关服务
步骤5:启动mysql数据库的复制控制器
创建mysql-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: mysql
spec:
replicas: 1
selector:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: hub.c.163.com/library/mysql
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
步骤6:启动相关的mysql-db服务
kubectl create -f mysql-svc.yaml
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
步骤7:启动myweb的复制控制器
kubectl创建-f myweb-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: myweb
spec:
replicas: 3
selector:
app: myweb
template:
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: docker.io/kubeguide/tomcat-app:v1
ports:
- containerPort: 8080
env:
- name: MYSQL_SERVICE_HOST
value: "mysql"
- name: MYSQL_SERVICE_PORT
value: "3306"
步骤8:启动相关的tomcat服务
kubectl create -f myweb-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: myweb
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30001
selector:
app: myweb
当我使用nodeport(30001)从浏览器访问时,我会得到以下异常:
错误:com . MySQL . JDBC . exceptions . JDBC 4 . communication s异常:通信链接失败最后一个成功发送到服务器的数据包是在0毫秒前。驱动程序没有从服务器收到任何数据包。
库贝特尔获得EP
NAME ENDPOINTS AGE
kubernetes 192.168.57.129:6443 1d
mysql 172.17.0.2:3306 1d
myweb 172.17.0.3:8080,172.17.0.4:8080,172.17.0.5:8080 1d
Kubectl Get SVC
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 <none> 443/TCP 1d
mysql 10.254.0.5 <none> 3306/TCP 1d
myweb 10.254.220.2 <nodes> 8080:30001/TCP 1d
从任何tomcat容器的内部,我都可以看到mysql-env和JSP中的相关mysql链接代码,如下所示:
Class.forName("com.mysql.jdbc.Driver");
String ip=System.getenv("MYSQL_SERVICE_HOST");
String port=System.getenv("MYSQL_SERVICE_PORT");
ip=(ip==null)?"localhost":ip;
port=(port==null)?"3306":port;
System.out.println("Connecting to database...");
conn = java.sql.DriverManager.getConnection("jdbc:mysql://"+ip+":"+port+"?useUnicode=true&characterEncoding=UTF-8", "root","123456");
[root@promote ~]# docker exec -it 1470cfaa1b1c /bin/bash
root@myweb-xswfb:/usr/local/tomcat# env |grep MYSQL_SERVICE
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_HOST
root@myweb-xswfb:/usr/本地/Tomcat#ping mysql
ping:未知主机
有人能告诉我为什么我不能ping mysqldb主机名从内部Tomcat服务器?或者如何进一步定位问题?
作为一个初学者,我和你做了同样的工作,遇到了同样的问题。这是我的解决方案,也许你可以试试:
>
在myweb rc中删除这些配置。yaml,因为它将覆盖系统默认值:
env: -名称:MYSQL_SERVICE_HOST值:“MYSQL”-名称:MYSQL_SERVICE_PORT值:“3306”
更改mysql-rc.yaml中的mysql image标签,使用低版本mysql:
图片:hub.c.163.com/library/mysql:5.5
首先创建服务,然后创建pod。请参考以下顺序:
kubectl create -f myweb-svc.yaml
kubectl create -f mysql-svc.yaml
创建mysql-rc.yaml
kubectl创建-f myweb-rc.yaml
您可以参考此文档:发现服务
祝你好运
尝试使用无头服务http://kubernetes.io/v1.0/docs/user-guide/services.html#headless-services
通过在你的mysql服务中设置
clusterIP: None
更新
我试过你的yaml文件。
pod正在运行:
➜ kb get po
NAME READY STATUS RESTARTS AGE
mysql-ndtxn 1/1 Running 0 7m
myweb-j8xgh 1/1 Running 0 8m
myweb-qc7ws 1/1 Running 0 8m
myweb-zhzll 1/1 Running 0 8m
服务包括:
kb get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 1h
mysql ClusterIP 10.102.178.190 <none> 3306/TCP 20m
myweb NodePort 10.98.74.113 <none> 8080:30001/TCP 19m
endpoint为:
kb get ep
NAME ENDPOINTS AGE
kubernetes 10.0.2.15:8443 1h
mysql 172.17.0.7:3306 20m
myweb 172.17.0.2:8080,172.17.0.4:8080,172.17.0.6:8080 19m
我在一个tomcat pod上执行bash,我可以ping我的服务(问题已解决):
kb exec -ti myweb-zhzll -- bash
root@myweb-zhzll:/usr/local/tomcat# ping mysql
PING mysql.default.svc.cluster.local (10.102.178.190): 56 data bytes
^C--- mysql.default.svc.cluster.local ping statistics ---
我可以 ping endpoint:
ping 172.17.0.7
PING 172.17.0.7 (172.17.0.7): 56 data bytes
64 bytes from 172.17.0.7: icmp_seq=0 ttl=64 time=0.181 ms
64 bytes from 172.17.0.7: icmp_seq=1 ttl=64 time=0.105 ms
64 bytes from 172.17.0.7: icmp_seq=2 ttl=64 time=0.119 ms
^C--- 172.17.0.7 ping statistics ---
正在连接到
http://192.168.99.100:30001/
我可以看到假猫页面:
更新 2
这是我的截图...我在您的数据库中看到数据没有错误。
我建议检查您的数据库配置。
我知道原因,是DNS的问题。web服务器找不到mysql服务器的IP地址。所以失败了。临时解决方案是将web服务器的IP地址改为mysql数据库服务器。希望能帮到你。谢谢你。
查看某个资源的定义和用法 kubectl explain 查看Pod的状态 kubectl get pods kubectl describe pods my-pod 监控Pod状态的变化 kubectl get pod -w 可以看到一个 namespace 中所有的 pod 的 phase 变化,请参考 Pod 的生命周期。 查看 Pod 的日志 kubectl logs my-pod kub
链表是一系列通过链接连接在一起的数据结构。 链接列表是包含项目的一系列链接。 每个链接都包含与另一个链接的连接。 链表是数组后第二个最常用的数据结构。 以下是理解链表的概念的重要术语。 Link - 链接列表的每个链接都可以存储称为元素的数据。 Next - 链接列表的每个链接都包含指向下一个链接的链接。 LinkedList - LinkedList包含指向First的第一个Link的连接链接。
我正在构建一个脚本,它将通知聊天室关于Asana中任务、评论等的更改。 我面临着3个简单的问题,但我被困住了,我想也许你们中的一些人可以帮助我。 问题#1:我面临的问题是,当某人(用户)在评论中得到“提及或超链接”时,我会得到一个随机的网址,上面有数字,我对用户身份或任何东西都不太了解。也许有什么我没看到的逻辑? 任务和项目的超链接也一样吗?你能告诉我URL的第一个和第二个是什么吗? 当我从Asa
这个示例程序将展示如何从一个URL获得一个页面。然后提取页面中的所有链接、图片和其它辅助内容。并检查URLs和文本信息。 运行下面程序需要指定一个URLs作为参数 package org.jsoup.examples; import org.jsoup.Jsoup; import org.jsoup.helper.Validate; import org.jsoup.nodes.Document
本文向大家介绍btrace定位生产故障的方法示例,包括了btrace定位生产故障的方法示例的使用技巧和注意事项,需要的朋友参考一下 前言 很多时候我们需要知道更多的程序的运行细节,但又不可能在开发的时候就把程序中所有的运行细节都打印到日志上,通常这个时候能采取的就是修改代码,重新部署,然后再观察,但这种方法对于online应用来说不是很好,另外一方面如果碰到不好改的代码,例如引用的其他的外部的包什
本文向大家介绍超链接的禁用属性Disabled使用示例,包括了超链接的禁用属性Disabled使用示例的使用技巧和注意事项,需要的朋友参考一下 可以设置超链接的Disabled属性的true 和 false来确定超链接是不是能点击 例如: 上面的意思是不想让bai du的超链生效,但在click不做任何约束和判断的话,但点击bai du的时候自然就会跳转到百度页面,这就是html中超链接禁用属性的