必须在同一个局域网/port-forward
This commit is contained in:
@ -7,7 +7,7 @@
|
||||
|
||||
<div>
|
||||
|
||||
<p style="color: red">必须选中下面的 {{envCount}} 个勾选框才能继续</p>
|
||||
<p style="color: red">请认真核对如下选项,{{envCount}} 个都选中后才能显示如何安装。</p>
|
||||
|
||||
<div style="overflow: hidden; padding: 20px 0 0 20px; margin-top: 1rem; margin-bottom: 20px; border: 1px solid #d7dae2;">
|
||||
<b-form>
|
||||
@ -20,6 +20,7 @@
|
||||
<b-form-checkbox value="networkcard">我的任意节点只有一块网卡(可以在完成K8S安装后再添加网卡)</b-form-checkbox><br/>
|
||||
<b-form-checkbox value="nat">如果我直接使用vmware等创建虚拟机,我使用NAT网络,而不是桥接网络</b-form-checkbox><br/>
|
||||
<b-form-checkbox value="docker">我的任意节点不会直接使用 docker run 或 docker-compose 运行容器</b-form-checkbox><br/>
|
||||
<b-form-checkbox value="vpn">我的所有节点都在同一个局域网内</b-form-checkbox><br/>
|
||||
</b-form-checkbox-group>
|
||||
</b-form-group>
|
||||
</b-form>
|
||||
@ -42,7 +43,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const ENV_COUNT = 7
|
||||
const ENV_COUNT = 8
|
||||
|
||||
export default {
|
||||
props: {
|
||||
|
||||
@ -5,7 +5,7 @@ module.exports = [
|
||||
strong: '一键离线安装',
|
||||
action: '去看看',
|
||||
url: 'http://store.lameleg.com?referrer=shaohq',
|
||||
weight: 5
|
||||
weight: 1
|
||||
},
|
||||
{
|
||||
name: '阳明的博客',
|
||||
@ -13,7 +13,7 @@ module.exports = [
|
||||
strong: '实战课程',
|
||||
action: '去看看',
|
||||
url: 'https://www.qikqiak.com/post/promotion-51/',
|
||||
weight: 5
|
||||
weight: 1
|
||||
},
|
||||
{
|
||||
name: '极客时间',
|
||||
@ -21,7 +21,7 @@ module.exports = [
|
||||
strong: 'DevOps实战笔记',
|
||||
action: '去看看',
|
||||
url: 'https://time.geekbang.org/column/intro/100036601?code=0Totv3yN%2FohiumTclUF4ky4qRYs9Ecq6ZK4IdgNf88M%3D',
|
||||
weight: 10
|
||||
weight: 1
|
||||
},
|
||||
{
|
||||
name: '腾讯云',
|
||||
@ -29,7 +29,7 @@ module.exports = [
|
||||
strong: '百款云产品一折起',
|
||||
action: '去抢',
|
||||
url: 'https://cloud.tencent.com/act/cps/redirect?redirect=1050&cps_key=2ee6baa049659f4713ddc55a51314372&from=console',
|
||||
weight: 40
|
||||
weight: 67
|
||||
},
|
||||
{
|
||||
name: '阿里云',
|
||||
@ -37,7 +37,7 @@ module.exports = [
|
||||
strong: '低至一折',
|
||||
action: '去抢',
|
||||
url: 'https://www.aliyun.com/1111/2019/home?userCode=obezo3pg',
|
||||
weight: 40
|
||||
weight: 30
|
||||
}
|
||||
|
||||
// {
|
||||
|
||||
@ -378,6 +378,13 @@ module.exports = {
|
||||
title: 'Kubernetes 实战',
|
||||
collapsable: true,
|
||||
children: [
|
||||
{
|
||||
title: '练习',
|
||||
collapsable: true,
|
||||
children: [
|
||||
'k8s-practice/access/port-forward',
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '概述',
|
||||
collapsable: false,
|
||||
|
||||
Binary file not shown.
@ -0,0 +1,29 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: redis-master
|
||||
labels:
|
||||
app: redis
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: redis
|
||||
role: master
|
||||
tier: backend
|
||||
replicas: 1
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: redis
|
||||
role: master
|
||||
tier: backend
|
||||
spec:
|
||||
containers:
|
||||
- name: master
|
||||
image: redis
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
ports:
|
||||
- containerPort: 6379
|
||||
@ -0,0 +1,16 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: redis-master
|
||||
labels:
|
||||
app: redis
|
||||
role: master
|
||||
tier: backend
|
||||
spec:
|
||||
ports:
|
||||
- port: 6379
|
||||
targetPort: 6379
|
||||
selector:
|
||||
app: redis
|
||||
role: master
|
||||
tier: backend
|
||||
@ -4,7 +4,7 @@
|
||||
|
||||
<div>
|
||||
<div class="row" style="margin-top: 1rem;">
|
||||
<div class="col-md-4 col-sm-12">
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<b-card style="height: 100%; " shadow="none" :body-style="{padding: '0rem 1.5rem'}"
|
||||
data-aos="fade-up" data-aos-duration="800">
|
||||
<h4>QQ群</h4>
|
||||
@ -18,7 +18,7 @@
|
||||
</p>
|
||||
</b-card>
|
||||
</div>
|
||||
<div class="col-md-4 col-sm-12">
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<b-card style="height: 100%; color: #2c3e50; line-height: 1.7; " shadow="none" :body-style="{padding: '0rem 1.5rem'}"
|
||||
data-aos="fade-up" data-aos-duration="1000">
|
||||
<h4>微信群</h4>
|
||||
@ -33,7 +33,7 @@
|
||||
</div>
|
||||
</b-card>
|
||||
</div>
|
||||
<div class="col-md-4 col-sm-12">
|
||||
<!-- <div class="col-md-4 col-sm-12">
|
||||
<b-card style="height: 100%; color: #2c3e50; line-height: 1.7; border-color: #f2be45; background-color: rgba(242, 190, 69, 0.1)" shadow="none" :body-style="{padding: '0rem 1.5rem'}"
|
||||
data-aos="fade-up" data-aos-duration="1200">
|
||||
<h4>VIP群</h4>
|
||||
@ -41,13 +41,12 @@
|
||||
<div style="margin-top: 10px;">
|
||||
<span>微信扫码</span>
|
||||
<p style="margin-top: 10px; margin-bottom: 0; text-align: center;">
|
||||
<!-- <img src="/images/dz.png" style="width: 150px;"></img> -->
|
||||
<img src="/images/qr-vip.jpeg" style="width: 150px;"></img>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</b-card>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -25,10 +25,10 @@ meta:
|
||||
* 至少2台 **2核4G** 的服务器
|
||||
* **Cent OS 7.6**
|
||||
|
||||
<grid :rwd="{compact: 'stack'}">
|
||||
<!-- <grid :rwd="{compact: 'stack'}">
|
||||
<grid-item size="2/3" :rwd="{tablet: '1/1', compact: '1/1'}" style="padding: 1rem 0 1rem 1rem;">
|
||||
|
||||
<div>
|
||||
<div> -->
|
||||
|
||||
[腾讯云11.11爆款1核2G云服务器首购88元,免费领9888元代金券,百款云产品一折起](https://cloud.tencent.com/act/cps/redirect?redirect=1050&cps_key=2ee6baa049659f4713ddc55a51314372&from=console)
|
||||
|
||||
@ -38,6 +38,12 @@ meta:
|
||||
|
||||
<!-- [阿里云服务器限时2折](https://www.aliyun.com/acts/limit-buy?userCode=obezo3pg) -->
|
||||
|
||||
::: danger 警告
|
||||
* 因为双十一,许多网友使用腾讯云、阿里云不同的账号各买了一台优惠价格的机器。目前我没有找到方法将不同局域网内的机器通过公网连接组成K8S集群,请谨慎。
|
||||
* 建议的做法是:腾讯云(或阿里云)采购一台优惠价格的包年实例作为 Master,同时再采购一台竞价实例(腾讯云)或抢占式实例(阿里云)作为 Worker 节点。竞价实例(抢占式实例)按分钟付费,以阿里云为例,一台2核8G的机器一天下来的费用大概是 1.2 - 1.5元。
|
||||
* 再次强调:按照本文档进行安装时,所有节点必须在同一个局域网内
|
||||
:::
|
||||
|
||||
**安装后的软件版本为**
|
||||
|
||||
* Kubernetes v1.16.2
|
||||
@ -53,13 +59,13 @@ meta:
|
||||
> * [安装 Kubernetes v1.15.2 单Master节点](/install/history-k8s/install-k8s-1.15.2.html)
|
||||
> * [安装 Kubernetes v1.15.1 单Master节点](/install/history-k8s/install-k8s-1.15.1.html)
|
||||
|
||||
</div>
|
||||
<!-- </div>
|
||||
|
||||
</grid-item>
|
||||
<grid-item size="1/3" :rwd="{tablet: '1/1', compact: '0/1'}" style="padding: 2rem 1rem 1rem 1rem;">
|
||||
<AdSenseVertical/>
|
||||
</grid-item>
|
||||
</grid>
|
||||
</grid> -->
|
||||
|
||||
安装后的拓扑图如下:<span v-on:click="$sendGaEvent('下载拓扑图-kubernetes', '下载拓扑图-kubernetes', 'Download-install-kubernetes.html')"><a :href="$withBase('/kuboard.rp')" download="www.kuboard.cn.rp">下载拓扑图源文件</a></span> <font color="#999">使用Axure RP 9.0可打开该文件</font>
|
||||
|
||||
|
||||
137
learning/k8s-practice/access/port-forward.md
Normal file
137
learning/k8s-practice/access/port-forward.md
Normal file
@ -0,0 +1,137 @@
|
||||
---
|
||||
vssueId: 156
|
||||
layout: LearningLayout
|
||||
lessAds: true
|
||||
description: Kubernetes教程_本文描述了如何使用kubectl_port-forward访问Kubernetes集群中的RedisServer_这种连接方式在实际进行Debug时非常有效
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes教程,K8S教程,kubectl port-forward, K8S培训
|
||||
---
|
||||
|
||||
# 使用port-forward访问集群中的应用程序
|
||||
|
||||
<AdSenseTitle>
|
||||
|
||||
本文描述了如何使用 `kubectl port-forward` 访问 Kubernetes 集群中的 Redis Server。这种连接方式在实际进行Debug时非常有效。
|
||||
|
||||
[[TOC]]
|
||||
|
||||
</AdSenseTitle>
|
||||
|
||||
## 为Redis创建Deployment和Service
|
||||
|
||||
* 创建 Redis Deployment,YAML文件如下:
|
||||
|
||||
<<< @/.vuepress/public/statics/learning/ptc/port-forward/redis-master-deployment.yaml
|
||||
|
||||
执行命令,以创建 Redis Deployment
|
||||
|
||||
``` sh
|
||||
kubectl apply -f https://kuboard.cn/statics/learning/ptc/port-forward/redis-master-deployment.yaml
|
||||
```
|
||||
|
||||
执行命令,查看Pod状态:
|
||||
|
||||
``` sh
|
||||
kubectl get pods
|
||||
```
|
||||
|
||||
输出结果如下:
|
||||
|
||||
```
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
redis-master-765d459796-258hz 1/1 Running 0 50s
|
||||
```
|
||||
|
||||
执行命令,查看 Deployment状态:
|
||||
|
||||
``` sh
|
||||
kubectl get deployment
|
||||
```
|
||||
|
||||
输出结果如下
|
||||
```
|
||||
NAME READY UP-TO-DATE AVAILABLE AGE
|
||||
redis-master 1/1 1 1 55s
|
||||
```
|
||||
|
||||
执行命令,查看ReplicaSet状态
|
||||
``` sh
|
||||
kubectl get rs
|
||||
```
|
||||
|
||||
输出结果如下:
|
||||
```
|
||||
NAME DESIRED CURRENT READY AGE
|
||||
redis-master-765d459796 1 1 1 1m
|
||||
```
|
||||
|
||||
* 创建Redis服务,YAML文件如下所示:
|
||||
|
||||
<<< @/.vuepress/public/statics/learning/ptc/port-forward/redis-master-service.yaml
|
||||
|
||||
执行命令,创建Service
|
||||
``` sh
|
||||
kubectl apply -f https://kuboard.cn/statics/learning/ptc/port-forward/redis-master-service.yaml
|
||||
```
|
||||
|
||||
执行命令,检查Service创建结果
|
||||
``` sh
|
||||
kubectl get svc | grep redis
|
||||
```
|
||||
|
||||
输出结果如下所示:
|
||||
```
|
||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
redis-master ClusterIP 10.100.0.213 <none> 6379/TCP 27s
|
||||
```
|
||||
|
||||
* 验证 Redis Service已经运行,并监听了 6379 端口
|
||||
|
||||
``` sh
|
||||
kubectl get pods redis-master-765d459796-258hz --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
|
||||
```
|
||||
> 请将 `redis-master-765d459796-258hz` 替换成你实际 redis 的名字
|
||||
输出结果如下所示:
|
||||
```
|
||||
6379
|
||||
```
|
||||
|
||||
## 转发本地端口到Pod的端口
|
||||
|
||||
* 使用 `kubectl port-forward` 命令,用户可以使用资源的名称来进行端口转发。下面的命令中的任意一行,都可以实现端口转发的效果:
|
||||
|
||||
``` sh
|
||||
# 这几个命令执行任意一个即可
|
||||
kubectl port-forward redis-master-765d459796-258hz 7000:6379
|
||||
kubectl port-forward pods/redis-master-765d459796-258hz 7000:6379
|
||||
kubectl port-forward deployment/redis-master 7000:6379
|
||||
kubectl port-forward rs/redis-master 7000:6379
|
||||
kubectl port-forward svc/redis-master 7000:6379
|
||||
```
|
||||
|
||||
以上命令的输出结果类似:
|
||||
```
|
||||
I0710 14:43:38.274550 3655 portforward.go:225] Forwarding from 127.0.0.1:7000 -> 6379
|
||||
I0710 14:43:38.274797 3655 portforward.go:225] Forwarding from [::1]:7000 -> 6379
|
||||
```
|
||||
|
||||
* 启动 Redis 命令行:
|
||||
``` sh
|
||||
redis-cli -p 7000
|
||||
```
|
||||
|
||||
* 在Redis命令行工具的提示符下,输入 `ping` 命令,如下所示:
|
||||
``` sh
|
||||
127.0.0.1:7000>ping
|
||||
```
|
||||
Redis 服务器将返回 `PONG`
|
||||
|
||||
## 总结
|
||||
|
||||
本机 7000 端口的连接被转发到集群中 Redis Server 所在 Pod 的 6379 端口。当此连接存在是,您可以使用您自己的机器上的客户端对部署在集群中的 Redis Server 进行 Debug。
|
||||
|
||||
::: tip 提示
|
||||
* 由于一些限制,port-forward 目前只支持 TCP 协议,[issue 47862](https://github.com/kubernetes/kubernetes/issues/47862) 用来跟进对 UDP 协议的支持。
|
||||
* MySQL数据库等使用 TCP 协议的部署在K8S集群中的服务器,都可以使用此方式进行 DEBUG
|
||||
:::
|
||||
Reference in New Issue
Block a user