2.6 KiB
2.6 KiB
部署管理服务
镜像
lghost/cmdb
or
harbor.opsbase.cn/public/cmdb:latest
Demo
apiVersion: v1
kind: Pod
metadata:
name: cmdb
namespace: test
labels:
component: cmdb
spec:
containers:
- name: cmdb
image: harbor.opsbase.cn/public/cmdb:latest
env:
- name: MYSQL_HOST # 指定root用户的用户名
value: "127.0.0.1"
- name: MYSQL_PASSWD
value: "123456"
ports:
- containerPort: 8000
- name: mysql
image: mysql:5.7
args:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
- name: MYSQL_DATABASE
value: "cmdb"
创建和访问Pod
# 创建namespace, namespace是逻辑上的资源池
kubectl create namespace test
# 使用指定文件创建Pod
kubectl create -f pod.yml
# 清空pod
kubectl delete pod --all -n test
# 查看pod,可以简写po
kubectl -n test get pod
kubectl -n test get po -o wide
# 进入pod
kubectl -n test exec -it cmdb -c cmdb sh
# 初始化
kubectl -n test exec -it cmdb -c cmdb -- python init.py
# 进入db
kubectl -n test exec -it cmdb -c mysql bash
> mysql -p
> show databases;
curl 测试接口
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"username":"admin",
"password": "123456"
}' \
http://10.244.2.10:8000/api/oauth/login/
Infra容器
docker ps -a |grep cmdb
# 在n容器node节点上 发现有三个容器
kubectl -n test exec -it cmdb -c cmdb -- ifconfig
kubectl -n test exec -it cmdb -c mysql -- sh
为了实现Pod内部的容器可以通过localhost通信,每个Pod都会启动Infra容器,然后Pod内部的其他容器的网络空间会共享该Infra容器的网络空间(Docker网络的container模式),Infra容器只需要hang住网络空间,不需要额外的功能,因此资源消耗极低。
pod容器命名: k8s_<container_name><pod_name>_<random_string>
查看pod详细信息
# 查看pod调度节点及pod_ip
kubectl -n test get pods -o wide
# 查看完整的yaml
kubectl -n test get po cmdb -o yaml
# 查看pod的明细信息及事件
kubectl -n test describe pod cmdb
更新服务版本
kubectl apply -f demo-pod.yaml
删除Pod服务
# 根据文件删除
kubectl delete -f demo-pod.yaml
# 根据pod_name删除
kubectl -n <namespace> delete pod <pod_name>
mysql + app 拆分
kubectl delete pod --all -n test kubectl create -f Deployment/two-pod/mysql.yml