// 重启服务
systemctl restart mysqld
systemctl status mysqld
重置密码
mysql -uroot -p
use mysql;
update user set password=password('HouGuiYu@123!@#') where user='root' ;
开启远程访问
mysql -uroot -p
// %表示是所有的外部机器,如果指定某一台机,就将%改为相应的机器名;‘root’则是指要使用的用户名
grant all privileges on *.* to 'root'@'%' identified by 'HouGuiYu@123!@#' with grant option;
// 运行此句才生效,或者重启MySQL
flush privileges;
配置好网络之后,集群是什么情况呢?我们可以创建 pod,也能通过 ReplicationController 来创建特定副本的 pod(这是更推荐也是生产上要使用的方法,即使某个 rc 中只有一个 pod 实例)。可以从集群中获取每个 pod ip 地址,然后也能在集群内部直接通过 podIP:Port 来获取对应的服务。
但是还有一个问题:pod 是经常变化的,每次更新 ip 地址都可能会发生变化,如果直接访问容器 ip 的话,会有很大的问题。而且进行扩展的时候,rc 中会有新的 pod 创建出来,出现新的 ip 地址,我们需要一种更灵活的方式来访问 pod 的服务。
其中 selector 告诉 kubernetes 这个 service 和后端哪些 pod 绑定在一起,这里包含的键值对会对所有 pod 的 labels 进行匹配,只要完全匹配,service 就会把 pod 作为后端。也就是说,service 和 rc 并不是对应的关系,一个 service 可能会使用多个 rc 管理的 pod 作为后端应用。
ports 字段指定服务的端口信息:
port:虚拟 ip 要绑定的 port,每个 service 会创建出来一个虚拟 ip,通过访问 vip:port 就能获取服务的内容。这个 port 可以用户随机选取,因为每个服务都有自己的 vip,也不用担心冲突的情况
NOTE: 需要注意的是,服务分配的 cluster IP 是一个虚拟 ip,如果你尝试 ping 这个 IP 会发现它没有任何响应,这也是刚接触 kubernetes service 的人经常会犯的错误。实际上,这个虚拟 IP 只有和它的 port 一起的时候才有作用,直接访问它,或者想访问该 IP 的其他端口都是徒劳。
Chain KUBE-SERVICES (2 references)
pkts bytes target prot opt in out source destination
0 0 KUBE-NODEPORTS all -- * * 0.0.0.0/0 0.0.0.0/0 /* kubernetes service nodeports; NOTE: this must be the last rule in this chain */ ADDRTYPE match dst-type LOCAL
而 KUBE-NODEPORTS chain 和 KUBE-SERVICES chain 其他规则一样,都是转发到更具体的 service chain,然后转发到某个 pod 上面。
➜ ~ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
secret "kubernetes-dashboard-certs" created
serviceaccount "kubernetes-dashboard" created
role "kubernetes-dashboard-minimal" created
rolebinding "kubernetes-dashboard-minimal" created
deployment "kubernetes-dashboard" created
service "kubernetes-dashboard" created
服务安装完毕后可以查看部署的容器与服务:
➜ ~ kubectl get deployments --namespace kube-system
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
kube-dns 1111 22m
kubernetes-dashboard 1 1 1 0 26s
➜ ~ kubectl get services --namespace kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 22m
kubernetes-dashboard ClusterIP 10.111.242.95 <none> 443/TCP 30s
$kubectl -n kube-system edit service kubernetes-dashboard
# Please edit the object below. Lines beginning with a '#' will be ignored,# and an empty file will abort the edit. If an error occurs while saving this file will be# reopened with the relevant failures.#apiVersion: v1...name: kubernetes-dashboardnamespace: kube-systemresourceVersion: "343478"selfLink: /api/v1/namespaces/kube-system/services/kubernetes-dashboard-headuid: 8e48f478-993d-11e7-87e0-901b0e532516spec:
clusterIP: 10.100.124.90externalTrafficPolicy: Clusterports:
-port: 443protocol: TCPtargetPort: 8443selector:
k8s-app: kubernetes-dashboardsessionAffinity: Nonetype: ClusterIP ->> NodePortstatus:
loadBalancer: {}
$ docker stack deploy --compose-file stack.yml demo
Stack demo was created
Waiting for the stack to be stable andrunning...
- Service web has one container running
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
db 1111 3m
web 1 1 1 1 3m
words 5 5 5 5 3m
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
db ClusterIP None <none> 55555/TCP 3m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 52m
web LoadBalancer 10.97.154.28 <pending> 80:30577/TCP 3m
words ClusterIP None <none> 55555/TCP 3m
可以看到这里的 web 有所谓的 LoadBalancer 类型,即可以对外提供服务。最后我们还可以用 stack 与 kubectl 命令来删除应用: