Service

本文目录结构

创建Service

创建pod

首先创建pod,层接上节课内容,创建内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apiVersion: apps/v1
kind: Deployment
metadata:
# 部署名字
name: djnode
spec:
replicas: 5
# 用来查找关联的 Pod,所有标签都匹配才行
selector:
matchLabels:
app: djnode
# 定义 Pod 相关数据
template:
metadata:
labels:
app: djnode
spec:
# 定义容器,可以多个
containers:
- name: djnode # 容器名字
image: djangowang77/djnode:v1 # 镜像

创建 Service

通过标签与djnode进行关联,创建service.yaml.

1
2
3
4
5
6
7
8
9
10
11
apiVersion: v1
kind: Service
metadata:
name: djnode
spec:
selector:
app: djnode
type: ClusterIP
ports:
- port: 8080 # 本 Service 的端口
targetPort: 8080 # 容器端口

应用配置“kubectl apply -f service.yaml”,查看servers。

1
2
3
4
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
djnode NodePort 10.98.196.188 <none> 8080:31000/TCP 64m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5h23m

查看服务详情 kubectl describe svc djnode,可以发现 Endpoints 是各个 Pod 的 IP,也就是他会把流量转发到这些节点。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
kubectl describe svc djnode
Name: djnode
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=djnode
Type: ClusterIP
IP Families: <none>
IP: 10.105.106.201
IPs: <none>
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
Endpoints: 172.17.0.2:8080,172.17.0.3:8080,172.17.0.5:8080
Session Affinity: None
Events: <none>

对外暴露服务

修改service.yaml内容如下。

1
2
3
4
5
6
7
8
9
10
11
12
apiVersion: v1
kind: Service
metadata:
name: djnode
spec:
selector:
app: djnode
type: NodePort
ports:
- port: 8080 # 本 Service 的端口
targetPort: 8080 # 容器端口
nodePort: 31000

查看暴露的端口,可以通过web浏览器访问以下端口

1
2
netstat -tnl | grep 31000
tcp 0 0 0.0.0.0:31000 0.0.0.0:* LISTEN

将容器部署到集群中

本文目录结构

容器部署方式

命令运行容器。

1
kubectl run testapp --image=ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1

Pod,编辑pod.yaml内容如下。(一切皆文件是 Unix/Linux 的基本哲学之一,K8s继承了这个传统)

1
2
3
4
5
6
7
8
9
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
# 定义容器,可以多个
containers:
- name: test-k8s # 容器名字
image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像

Deployment,编辑Deployment.yaml内容如下。以下文件描述了运维工程师对线上服务的期望,并把线上的服务状态、副本、镜像源都转为配置文件进行描述,其优势所见即所得,且此配置文件可以分享给其他运维工程师重复利用或了解当前服务的配置情况。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
apiVersion: apps/v1
kind: Deployment
metadata:
# 部署名字
name: test-k8s
spec:
replicas: 2
# 用来查找关联的 Pod,所有标签都匹配才行
selector:
matchLabels:
app: test-k8s
# 定义 Pod 相关数据
template:
metadata:
labels:
app: test-k8s
spec:
# 定义容器,可以多个
containers:
- name: test-k8s # 容器名字
image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像

kubectl运行deployment.yaml文件

1
2
kubectl apply -f deployment.yaml
kubectl get pods

关于kind相关参数:

  • Deployment:适合无状态应用,所有pod等价,可替代;
  • StatefulSet:有状态的应用,适合数据库这种类型;
  • DaemonSet:在每个节点上跑一个 Pod,可以用来做节点监控、节点日志收集等;
  • Job & CronJob: Job 用来表达的是一次性的任务,而 CronJob 会根据其时间规划反复运行。

Read More

minikube单机演练环境配置

本文目录结构

关于minikube

minikube可以模拟本机的Kubernetes集群环境,这集群就包含了Master和Node,当前它支持Windows、Linux和MaxOS等操作系统,官网https://minikube.sigs.k8s.io/docs/。

环境信息

操作系统发行版本

Linux CentOS7.9版本

minikube安装要求

  • 至少2CPUs或更多CPUS
  • 至少2GB或更多内存
  • 至少20GB或更多磁盘空间
  • 连接互联网
  • 容器或虚拟机环境,如Docker, QEMU, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation

安装与配置Docker

安装minikube前,先要安装Docker。

1
yum install -y docker 

配置国内镜像源

1
2
3
4
5
6
cat <<EOF > daemon.json
{
"registry-mirrors": ["https://ud6340vz.mirror.aliyuncs.com"]
}
EOF
mv daemon.json /etc/docker/

再次确认。

1
cat /etc/docker/daemon.json

启动容器。

1
systemctl restart docker

Read More

李想产品实践16讲

这是一门得到的课程,由理想汽车CEO李想亲自讲解的,课程介绍了理想汽车在做产品过程中从0~1,再从整个1-10的过程和他的思考。课程结构非常清晰,课程从回归产品的本质开始讲起,从以下两个方法论进行切入并不断地延展.

  • 第一条:关注用户价值,超越用户需求
  • 第二条:把组织当产品来做,用组织的成长支撑产品的成长

课程非常适合产品经理或用户体验等职位人群.整个 课程一共16讲,我刚听到第9讲,以下整理了前8讲的课程思维导图,供大家参考,后续课程内容会持续更新.

1~8课

9~16 课

你需要一个专业的设计师(Midjourney)

我一直身处互联网行业,从2013年时就经常听到大数据,2014年随着大数据的浪潮也逐步开始搞一些AI相关的系统建设,在当时的时间点觉得概念很好也比较超前,但从行业看更多是听到声音没有见到有代表性的产品。2022年底chatgpt4震惊业界,随时而来带动了一些类AI工具的发展,确实从各方面看得见和摸得着的都能感受到这波浪潮的澎湃,最近在玩Midjourney这里我也整理了一下AI发展和Midjourney的相关资料也分享在这里供大家参考。

一. AI的演进

以下为AI进化路线图

从演进图上可以看到AI概念很早就有,而早年因计算量和数据量等问题更多停留在概念阶段,从2020的GPT3开始引起了AI的浪潮。而AI这里又可以分为两类:

  • 文本处理
  • 图片绘制
    在图片绘制流域代表的产品如Midjourney 、AI painting 、PicUP.AI 、DALL-E 2 和Disco Diffusion等

二. 你需要一个专业的设计师 (Midjourney)

你需要一个专业的设计师,它就是Midjourney。Midjourney是一款绘画工具,创建团队来自美国旧金山,创始人David Holz,整个公司规模不到20人,但估值达到数亿美金。Midjourney是一款AI绘图工具,只要输入关键字,就可以根据算法生成一张图片。

1
tips:创始人表示他最喜欢阅读两类书,一个是科幻文学,另一个是中国古典文学。中国古代文学有一些最美的对人类历史的深刻思考,Midjourney这个名字就来自于《庄子》,庄周梦蝶,对应中文的“中道”。

2.1 Midjourney适用场景

Midjourney的应用场景:

  • 在工作汇报中场景中的图片制作
  • 自媒体运营,公众号的封面、文章配图等
  • 视频封面,海报Logo
  • 广告图片
  • 社交软件的头像
  • 大头贴、人像转动画等

生活中的类似场景很多,不一一举例,以上这些工作内容在以往都需要有专业的设计师花很多时间才能完成, 但目前这些工作都可以通过Midjourney代为完成。

以下两张照片是通过Midjourney花几分钟生成的大头贴:

Read More

30分钟了解Terraform

基础设施即代码

在聊Terraform前,总是绕不开Iac这个话题,因为Terrafrom也是IaC的一个子集。
基础架构即代码(Infrastucture as Code,IaC) ,通过代码的方式来管理整个基础架构。这里的两个关键词:

  • Infrastucture:管理的对象包括公有云、私有云、混合云,按层划分还包括IaaS和PaaS;
  • Code:代码+注释屏蔽人手动配置很多过程只有配置过或负责人才了解,代码可版本管理(过程可追踪)

Terraform

腾讯云的Terraform实践

通过脚本配置腾讯云弹性网卡

最近遇到一个问题腾讯云服务器在配置弹性网卡时需要手动配置路由,如果路由配置错误远程连接的服务器会立马断开,需要重启后再次连接远程SSH,另外因Linux操作系统发行版本不一样,版本新旧程度不一也会有部分没有配置网卡的情况,当前对新手配置的体验不是很好,经过几番折腾也写了一个脚本来适配各种情况,截止到目前已经适配这几种Linux发行版本CentOS7.5-8.4、 TencentOS、OpencloudOS和Ubuntu等操作系统发行版本。脚本搞定后还可以通过tat-agent来批量下发服务器,并执行操作,让用户特别新手无需登录服务器,输入配置弹性绑卡的关键步骤就可以自动配置好,以下来介绍一下配置过程。

首先说一下腾讯云弹性网卡的应用场景,它主要应用在内外网分离与灾备等场景,应用还是比较广泛,以下为我购买腾讯云云服务器的环境:

  • 腾讯云云服务器
  • Linux CentOS_7.5
  • 申请了一块辅助网卡
  • 主网卡两个内网IP ,辅助网卡三个内网IP

详细见以下截图。

以下为自动配置脚本。

Read More