TKEStack是一个开源项目,为在生产中部署容器的组织提供容器管理平台。TKEStack让您可以轻松地在任何地方运行Kubernetes、满足 IT 要求并为DevOps团队提供支持。
kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。Kubernetes是一种开源的容器编排和管理平台,它可以帮助我们在分布式的环境中管理容器化的应用。Kubernetes可以让开发者和运维人员通过定义和管理Pod、Service、Deployment等资源来部署和管理应用程序,使得应用程序更易于部署、扩展和管理。
kubernetes集群架构示意图
TKEStack容器管理平台部署环境要求需按如下准备,由于是测试环境,本次部署节点的硬件配置略低于官方要求。
TKEStack部署环境要求如下:
hostname | IP地址 | 操作系统版本 | k8s版本 | 角色 |
---|---|---|---|---|
master | 192.168.3.141 | centos7.9 | 1.21.4-tke.3 | master节点/TKEStack安装节点 |
node01 | 192.168.3.142 | centos7.9 | 1.21.4-tke.3 | worker节点 |
node02 | 192.168.3.143 | centos7.9 | 1.21.4-tke.3 | worker节点 |
hostname | IP地址 | 操作系统版本 | k8s版本 | 角色 |
---|---|---|---|---|
k8s-master | 192.168.3.201 | centos7.6 | v1.27.4 | master节点 |
k8s-node01 | 192.168.3.202 | centos7.6 | v1.27.4 | worker节点 |
k8s-node02 | 192.168.3.203 | centos7.6 | v1.27.4 | worker节点 |
1.部署TKEStack容器管理平台;
2.在TKEStack容器管理平台部署wordpress应用。
在master安装节点上,执行以下命令,Web GUI 将引导初始化并安装TKEStack 的Global集群和控制台。
# Choose installation package according to your installation node CPU architecture [amd64, arm64]
arch=amd64 version=v1.9.0 && wget https://tke-release-1251707795.cos.ap-guangzhou.myqcloud.com/tke-installer-linux-$arch-$version.run{,.sha256} && sha256sum --check --status tke-installer-linux-$arch-$version.run.sha256 && chmod +x tke-installer-linux-$arch-$version.run && ./tke-installer-linux-$arch-$version.run
在安装过程中需要耐心等待一段时间,出现以下提示时,表示TKEStack已经初步安装成功。
访问地址:http://192.168.3.141:8080/,进入TKEStack初始配置页面。在账户设置中,设置用户名和密码,高可用这里选择不设置。
网卡名称:eth0
GPU类型:不使用
容器网络CIDR:10.0.0.0/14
master节点:192.168.3.141/ssh端口22/密码认证
其余默认,下一步即可。
使用TKE提供的用户认证功能
选择默认的TKE提供
选择开启业务模块,默认是开启状态。
监控存储类型:TKE提供。
默认设置即可。
检查所有配置是否正确,点击安装。
TKEStack初始化安装过程有点长,需要耐心等待安装完成即可。
出现以下界面,表示TKEStack容器管理平台安装完毕,
访问地址:https://192.168.3.141/,将IP替换为自己安装节点的IP地址。输入账号密码,进入TKEStack首页。
在集群管理——global集群,点击进入global集群管理页面。
在global集群管理页面,点击节点管理——节点,选择添加节点。
填写目标机器信息:
目标机器:192.168.3.142
SSH端口:22
认证方式:密码认证
填写node01工作节点的root账号和密码,其余默认,保存即可。
按照以上配置,添加第二台工作节点node02,添加即可。
等待节点初始化完成,看到各节点状态为正常Running状态即可。
查看TKEStack首页概览,可以看到当前资源概览和集群状态
检查本地k8s集群的工作节点状态
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane 120d v1.27.4
k8s-node01 Ready <none> 120d v1.27.4
k8s-node02 Ready <none> 120d v1.27.4
检查本地k8s集群的系统pod状态
[root@k8s-master ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-85578c44bf-gw2km 1/1 Running 3 (88m ago) 120d
calico-node-8tts7 1/1 Running 3 (88m ago) 120d
calico-node-fx8mv 1/1 Running 3 (88m ago) 120d
calico-node-n8rt4 1/1 Running 3 (88m ago) 120d
coredns-7bdc4cb885-5vgx8 1/1 Running 3 (88m ago) 120d
coredns-7bdc4cb885-l22fj 1/1 Running 3 (88m ago) 120d
etcd-k8s-master 1/1 Running 4 (88m ago) 120d
kube-apiserver-k8s-master 1/1 Running 4 (88m ago) 120d
kube-controller-manager-k8s-master 1/1 Running 4 (88m ago) 120d
kube-proxy-6vvw5 1/1 Running 3 (88m ago) 120d
kube-proxy-867jg 1/1 Running 3 (88m ago) 120d
kube-proxy-lgsc8 1/1 Running 3 (88m ago) 120d
kube-scheduler-k8s-master 1/1 Running 4 (88m ago) 120d
下载本地k8s集群kubeconfig文件,一般默认位置在~/.kube/config。
root@k8s-master ~# ls -l ~/.kube/config
-rw------- 1 root root 5649 Aug 2 09:56 /root/.kube/config
上传kubeconfig文件,提交即可。
查看导入集群状态
重新访问TKEStack首页概览页面,已经成功识别到导入的k8s集群及相关信息。
在新导入的k8s集群my-k8s管理页面,点击yaml创建资源。
编写wordpress的yaml部署文件
---
apiVersion: v1
kind: Namespace
metadata:
name: wordpress
---
apiVersion: v1
kind: Service
metadata:
name: wordpress
namespace: wordpress
labels:
app: wordpress
spec:
ports:
- protocol: TCP
targetPort: 80
port: 80
nodePort: 30020
selector:
app: wordpress
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
namespace: wordpress
labels:
app: wordpress
spec:
replicas: 2
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
- name: wordpress
image: wordpress
ports:
- containerPort: 80
env:
- name: WORDPRESS_DB_HOST
value: wordpress-mysql.wordpress.svc.cluster.local
- name: WORDPRESS_DB_USER
value: wordpress
- name: WORDPRESS_DB_PASSWORD
value: wordpress
volumeMounts:
- mountPath: "/var/www/html"
name: wordpress-data
volumes:
- name: wordpress-data
hostPath:
path: /data/wordpress/data
---
apiVersion: v1
kind: Service
metadata:
name: wordpress-mysql
namespace: wordpress
labels:
app: wordpress
spec:
ports:
- port: 3306
type: ClusterIP
selector:
app: wordpress
tier: mysql
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: wordpress-mysql
namespace: wordpress
labels:
app: wordpress
spec:
replicas: 1
selector:
matchLabels:
app: wordpress
tier: mysql
serviceName: "wordpress-mysql"
template:
metadata:
labels:
app: wordpress
tier: mysql
spec:
# nodeSelector:
# kubernetes.io/hostname: node01
containers:
- name: mysql
image: mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
value: wordpress
- name: MYSQL_DATABASE
value: wordpress
- name: MYSQL_USER
value: wordpress
- name: MYSQL_PASSWORD
value: wordpress
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- mountPath: /var/lib/mysql
name: mysql-storage
volumes:
- name: mysql-storage
hostPath:
path: /var/lib/mysql
将yaml部署文件复制到编辑栏中,点击“完成”
在TKEStack容器管理平台,查看wordpress命名空间下的Deployment资源状态。
在TKEStack容器管理平台,查看wordpress命名空间下的service状态。
可以看到wordpress应用的映射主机端口为30020
访问地址:http://192.168.3.202:30020/wp-admin/install.php, 可以选择系统中文语言或者英语,这里是选择英语。
自定义网站信息,设置网站名及网站管理员密码等信息。
访问地址:http://192.168.3.202:30020/
后台管理地址:http://192.168.3.202:30020/wp-admin/
输入之前设置的管理员和密码,进入wordpress后台管理。
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!