【ironman】平台部署--部署容器云平台
1.1基础环境配置
在第一台master虚拟机执行:[root@xxx ~]# hostnamectl set-hostname master
在第二台node虚拟机执行:[root@xxx ~]# hostnamectl set-hostname node
在第一台master执行:[root@master ~]# vi /etc/hosts
插入以下内容,用master和node的IP地址进行替换
10.26.7.30 master
10.26.3.57 node
1.2Yum源配置
[root@master ~]# mv /etc/yum.repos.d/* /media/
[root@master ~]# vi /etc/yum.repos.d/http.repo
[httpiso]name=httpisobaseurl=http://10.24.1.46/centos/gpgcheck=0enable=1
注意“http://10.24.1.46/centos/”这个地址要用提供的http服务地址
1.3平台部署--部署容器云平台
软件包地址为:http://xxxxx.iso
将提供的安装包xxx.iso下载至master节点/root目录,并解压到/opt目录:
在master节点安装kubeeasy工具:
[root@master ~]# curl -O http://10.24.1.46/competition/chinaskills_cloud_paas_v2.1.iso
[root@master ~]# mount -o loop chinaskills_cloud_paas_v2.1.iso /mnt/
[root@master ~]# cp -rfv /mnt/* /opt/
[root@master ~]# umount /mnt/
[root@master ~]# mv /opt/kubeeasy /usr/bin/kubeeasy
[root@master ~]# kubeeasy install depend --host 10.1.9.239,10.1.15.164 --user root --password Pio2I8nL --offline-file /opt/dependencies/packages.tar.gz
[root@master ~]# kubeeasy install kubernetes --master 10.1.9.239 --worker 10.1.15.164 --user root --password Pio2I8nL --version 1.22.1 --offline-file /opt/kubernetes.tar.gz
(软件包地址用提供的;10.24.2.10,10.24.2.11IP替换为自己的master和node的IP)
1.4部署Istio服务网格
[root@master ~]# kubeeasy add --istio istio
1.5部署KubeVirt虚拟化
[root@master ~]# kubeeasy add --virt kubevirt
1.6部署Harbor仓库及Helm包管理工具
[root@master ~]# kubeeasy add --registry harbor
[root@master ~]# helm create mychart
正常结果:Creating mychart
[root@master ~]# rm -rf mychart/templates/*
[root@master ~]# vi mychart/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: nginx
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
resources: {}
status: {}
Helm的安装
[root@master ~]# helm install web mychart
正常结果:
NAME: web
LAST DEPLOYED: Tue Sep 13 16:23:12 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
在master节点执行helm status web命令进行验证
[root@master ~]# helm status web
正常结果:
NAME: web
LAST DEPLOYED: Tue Sep 13 16:23:12 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
2.1-2.10
2.1Linux文件操作
【1】
mkdir chinaskill
cd chainskill
touth chinaskills.txt
【2】
cp chinaskills.txt chinaskill_copy.txt
2.2Linux用户操作
【1】
useradd user01 -u 3021 -c "Hello user01"
【2】
usermod usergroup01
useradd user02
gpasswd -a user02 usergroup01
【3】
useradd user03
usermod -d /root/chinaskill user03
2.3Linux系统信息查询
Cat /etc/redhat-release > /root/resources.txt
free -g >> /root/resources.txt
2.4Docker创建容器操作
kubectl run chinaskills --image=nginx --namespace=default
kubectl create deployment chinaskills --image=nginx:latest --port=80 --dry-run=client -o yaml
kubectl expose deployment chinaskills --port=5080 --target-port=80
或
docker run -p 5080:80 --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx:latest
2.5Docker查询容器操作
kubectl get pods -o wide > /root/dockerinfo.txt
或
docker ps > /root/dockerinfo.txt
2.6Docker容器内部操作
docker exec -it chinaskills /bin/bash
echo "Hello Nginx" >/usr/share/nginx/html/index.html
2.7 Dockerfile编写
mkdir /root/nginx
cd /root/nginx/
touch Dockerfile
echo "Hello World" >> index.html
vim Dockerfile
FROM nginx:latest
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
:wq #保存退出
docker build -t chinaskill-nginx:v1.0 .
2.8容器化部署MariaDB
cat mysql_init.sh
#!/bin/bash
mysql_install_db --user=root
mysqld_safe --user=root &
sleep 8
mysqladmin -u root password 'root'
mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'root';"
mysql -uroot -proot -e "flush privileges;"
mysql -uroot -proot -e "source /opt/pig.sql;source /opt/pig_codegen.sql;source /opt/pig_config.sql;source /opt/pig_job.sql;"
cat Dockerfile-mariadb
FROM centos:centos7.9.2009
RUN rm -rf /etc/yum.repos.d/*
COPY yum/ /opt/yum/
COPY local.repo /etc/yum.repos.d/
ENV LC_ALL en_US.UTF-8
RUN yum install -y mariadb-server
COPY mysql_init.sh /opt/
COPY mysql/ /opt/
RUN bash /opt/mysql_init.sh
EXPOSE 3306
CMD ["mysqld_safe","--user=root"]
2.9容器化部署Redis
cat Dockerfile-redis
FROM centos:centos7.9.2009
RUN rm -rf /etc/yum.repos.d/*
COPY yum/ /opt/yum
COPY local.repo /etc/yum.repos.d/
RUN yum install -y redis
RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/redis.conf
RUN sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
EXPOSE 6379
CMD ["/usr/bin/redis-server","/etc/redis.conf"]
2.10容器化部署Pig
cat pig-start.sh
#!/bin/bash
sleep 15
nohup java -jar /root/pig-register.jar $JAVA_OPTS > /dev/null 2>&1 &
sleep 15
nohup java -jar /root/pig-gateway.jar $JAVA_OPTS > /dev/null 2>&1 &
sleep 15
nohup java -jar /root/pig-auth.jar $JAVA_OPTS > /dev/null 2>&1 &
sleep 15
nohup java -jar /root/pig-upms-biz.jar $JAVA_OPTS > /dev/null 2>&1
cat Dockerfile-pig
FROM centos:centos7.9.2009
RUN rm -rf /etc/yum.repos.d/*
COPY yum/ /opt/yum/
COPY local.repo /etc/yum.repos.d/
COPY service/ /root/
RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
COPY pig-start.sh /opt/
RUN chmod +x /opt/pig-start.sh
EXPOSE 3000 400 8848 9999
CMD ["/bin/bash","/opt/pig-start.sh"]
3.1
3.2
4.1创建虚拟私有云
点击右上角“创建虚拟私有云”按钮,创建虚拟私有网络,在跳转后的页面
配置虚拟私有云的基本信息,名称为“internet1”,IPv4网段地址为“192.168.0.0/16”,
子网名称配置为“subnet1”,地址为“192.168.1.0/24”,可用区域可以默认选
项,配置完成后点击右下角的“立即创建”按钮
4.2
点击右上角“创建虚拟私有云”按钮,配置网络名称为“intnet2”,地址段
使用“172.16.1.0/24”,子网可用区域为默认,名称为“subnet2”,配置完成后
点击“立即创建”按钮。
找到左侧网络控制台列表,点击“对等连接”按钮,点击页面右上角“创建
对等连接”按钮。创建一个“internet1”和“intnet2”两个虚拟私有云的对等连
接,名称为“peering-net1-net2”,本段 VPC 为“intnet1”,账户选择为“当前
账户”,对端 VPC 为“intnet2”,点击“确定”按钮
创建完成后,需要在路由表中添加两个 VPC 的网段路由才能通信,在左侧网络控制台点击“路由表”,在“rtb-internet1”和“rtb-intnet2”路由表中各添加一条路由规则
点击“rtb-internet1”,进入后点击“添加路由”按钮,配置路由表中添加目
的地址为“172.16.0.0/16”,下一跳类型为“对等连接”,下一跳选项为“默认”,
配置完成后点击“确定”按钮
返回路由列表,点击名称“rtb-intnet2”,进入后点击“添加路由”按钮,
配置路由表中添加目的地址为“192.168.0.0/16”,下一跳类型为“对等连接”,
下一跳选项为默认,配置完成后点击“确定”按钮
4.3创建弹性云服务器
1)弹性云服务器控制台
在华为云控制台左上角服务列表,选择并点击“计算>弹性云服务器 ECS”
进入云服务器控制台
(2)选择机型
进入弹性云服务器页面后,点击右上角“购买弹性云服务器”,在自定义配
置界面,选择“按需计费”,可用区选择“随机分配”即可,CPU 架构采用“x86
计算”,选择规格为“通用计算增强型、2 核 4G”。镜像选择“公共镜像 CentOS
7.9”,系统盘使用“通用性 SSD 40GB”,配置完成后,点击右下角“网络配置”。
(3)网络设置
在网络配置中,网络选择已创建过的“internet1”,安全组使用上面创建过
的“ChinaSkill-security-group”,购买“动态 GBP”弹性公网 IP 地址,按带宽计费,带宽大小选择“5Mbit”,配置完成后点击右下角“高级配置”。
(4)高级设置
配置 云服 务器的 名称为 “ChinaSkill-node1 ”,设 置主 机 root 密码 为
“Abc@1234”,密码要满足华为云密码设置要求。其他选项默认,点击“下一
步:确认配置”
(5)确认配置
选择购买云服务器数量为 2,勾选同意购买协议选项。然后点击“立即购买”。
之后就可以在弹性云服务器控制台的实例中看到创建的两台云服务器
“ ChineSkill-node-0001 ” 和 “ ChineSkill-node-0002 ” 。 可 以 看 到 云 服 务 器 ChineSkill-node-0001 的 IP 地址为“192.168.1.19”,公网 IP 为“124.71.184.9”; 云服务器 ChineSkill-node-0002 的 IP 地址为“192.168.1.192”,公网 IP 为 “192.168.1.192”
4.4创建云数据库 RDS
(1)云数据库控制台
在华为云控制台左上角服务列表,选择并点击“数据库>云数据库 RDS”,
进入云数据库控制台
(2)购买云数据库实例
点击页面右上角“购买数据库实例”,进入云数据库实例购买菜单页面。选
择计费模式为“按需计费”,设置实例名称“ChinaSkillmysql”,选择数据库版
本为“MySQL 5.7”,实例类型为“主备”,选择“可用区一”。
选择性能规格为“x86 通用型,2vCPU、4GB”,存储空间为“40GB”,选
择创建的虚拟私有云“internet1”,选择创建安全组策略“ChinaSkill-security-group”,
mysql 数据库端口号默认为“3306 端口”
配置数据库管理员密码为“rds01@test”,购买实例数量为 1 个,点击立即
购买即可
(3)查看云数据库实例列表
购买完成等待创建一段时间后,可以在云数据库控制台查看到所购买的云数
据库实例
(4)云数据库只读实例
打开云数据库控制台,点击数据库实例名称,进入数据库基本信息页面,点击“创建只读”按钮,创建一个只读实例,配置数据库信息,参数信息可以全默认,也可以根据实际情况自行配置,配置完成后点击“立即创建”创建完成后可在 RDS 实例列表中看到创建后的只读实例
(5)读写分离
创建完只读实例后,申请读写分离地址,将数据库读、写数据流进行分离。
点击数据库名称进入数据库基本信息页面,点击页面中读写分离地址后的申请按
钮,点击立即开启功能按钮,申请数据库代理服务,选择代理实例规格为“2vCPUs | 4GB(通用增强型)”和代理实例数量为“2”,点击“确定”按钮,申请完代理服务后,等待 5-10 分钟,便可以在基本信息读写分离地址后查看到访问 IP 地址
4.5部署 WordPress 服务
(1)上传软件包
将 wordpress-5.0.2-zh_CN.tar.gz 软件包,上传至/root 目录下并进行解压,命
令如下所示:
[root@lnmp ~]# tar -zxvf wordpress-5.0.2-zh_CN.tar.gz
(2)配置 Web 服务
删除 Nginx 站点目录下所有内容,将解压后的内容,复制到 Nginx 站点目录
下,命令如下所示:
[root@lnmp ~]# rm -rf /usr/share/nginx/html/*
[root@lnmp ~]# cp -rvf wordpress/* /usr/share/nginx/html/
(3)编辑 WordPress 配置文件
编辑 wordpress 配置文件,进行以下内容修改,MySQL 主机需要填写云数
据库的内网地址,这里是 192.168.1.211,命令如下所示:
[root@lnmp ~]# cd /usr/share/nginx/html/
[root@lnmp html]# cp wp-config-sample.php wp-config.php
[root@lnmp html]# chmod 777 *
[root@lnmp html]# vi wp-config.php
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress 数据库的名称 */
define('DB_NAME', 'wordpress');
/** MySQL 数据库用户名 */
define('DB_USER', 'root');
/** MySQL 数据库密码 */
define('DB_PASSWORD', 'rds01@test');
/** MySQL 主机 */
define('DB_HOST', '192.168.1.211');
//RDS 实例内网地址
/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');
/** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');
(4)访问 WordPress 站点
① 在浏览器中输入云主机公网 IP 地址访问,注意在访问站点前请确保主机
所使用的安全组规则已经放通 80、3306 端口,否则访问不成功
② 在访问页面中,配置站点主题名称为“wordpress”,用户名为“test”,
密码为“123456”,勾选“确认使用弱密码”,电子邮件配置为“test@qq.com”,
配置完成后点击“安装 WordPress”
③ 安装完毕之后,在跳转后的页面输入用户名密码,并点击“登录”
④ 登录后跳转到如下页面,证明 WordPress 个人博客系统,部署成功
5.1容器 CCE 集群
4.1 购买云容器引擎 CCE
(1)云容器控制台
单击右上角控制台选项进入后台,选择并点击“服务列表>容器服务>云容
器引擎 CCE”
(2)购买 CCE 集群
① 点击页面中的 CCE 集群“创建”按钮
② 选择计费模式为按需计费,设置集群名称为 kcloud,集群版本选择 V1.25,
集群管理规模根据需求自行选择需要多少个节点,高可用选择“是”
③ 选择容器网络模型为“VPC 网络”,修改每个节点中可分配的 pod 实例
数目上限为“256”,虚拟私有云网络为节点网络,选择为“intnet1”网络和“subnet1”
子网。分别设置容器网段、服务网段不与节点网段冲突即可,其他选项均为默认,
点击下一步插件配置。
④ 点击“下一步:插件配置”,在此配置中所有选项默认即可,点击“下
一步:规格确认”,如下图 4-1-5 所示。
⑤ 在插件配置中,确认自己的购买的 CCE 集群配置无误后,勾选我已阅读
并知晓上述使用说明,并点击“提交”开始创建。
(3)创建节点
① 集群创建完成后,在 kcloud 集群中点击“创建节点”。配置计费模式为
“按需计费”,可用区“随机分配”,节点类型为“弹性云服务器-虚拟机”,
容器引擎为“Containerd”,节点规格采用“4 核 8G”
② 配置操作系统镜像为“Centos7.6”,登录方式为“密码”,密码设置为
“Abc@1234”
③ 配置存储设置,系统盘为“极速型 SSD 50GiB”,数据盘为“极速型 SSD
100GiB”,在高级配置中点击数据盘空间分配,勾选“自定义容器引擎空间大
小”,
④ 网络配置中使用已创建好的虚拟私网络“internet1”子网“subnet1”,
⑤ 在高级配置中,配置最大实例数为“64 个”,其余选项均为默认,配置
好后点击“下一步:规格确认”
⑥ 确认配置规格无误后,勾选我已阅读并知晓上述使用说明和《镜像免责
声明》
⑦ 创建完成后,查看节点状态
5.2安装DashBoard
(1)集群绑定弹性 IP 地址
① 打开网络控制台>弹性公网 IP 和带宽>弹性公网 IP 地址,购买一个弹性
公网 IP
② 点击弹性公网 IP 后“绑定”按钮,将其绑定在 kcloud 容器集群的节点
上。
③ 打开 kcloud 云容器引擎>资源>节点管理,点击节点后的“更多”按钮,
点击“同步云服务器”即可更新公网 IP 地址
(2)安装 dashboard 插件
① 打开 kcloud 云容器引擎>插件管理,找到 dashboard 插件,点击下方的安
装插件按钮,安装 dashboard 插件
② 配置插件规格为“单实例”,证书配置使用“默认证书”,其余选项默
认,完成后点击“安装”,
③ 在插件管理>插件实例中可以找到运行中的 dashboard 实例,点击其名称
进入插件实例详情
④ 点击 dashboard 插件中的“访问”,将 token 粘贴至下方框中,点击登录
即可访问 dashboard 页面
(3)安装 autoscaler 插件
① 打开插件管理页面,找到 autoscaler 插件,点击安装插件
② 选择插件规格为单实例,点击安装
③ 安装完成查看状态为运行中
5.3使用kubectl操作集群
使用kubectl操作集群
在kcloud集群中安装kubectl工具,使用kubectl命令管理kcloud集群。完成后提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。
远程登录kcloud集群节点的cloudshell中,其中的kubectl已经安装完毕,可跳过第一二步骤,代码命令中不需要cd/home
要先vi kcloud-kubeconfig.yaml:输入“当前数据”后
才能执行
mkdir -p $HOME/.kube
mv -f kcloud-kubeconfig.yaml $HOME/.kube/config
kubectl config use-context internal
kubectl cluster-info
5.4安装Helm
安装Helm
使用提供在http文件服务器上的helm软件包helm-v3.3.0-linux-amd64.tar.gz,在kcloud集群中安装helm服务。完成后提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。
wget https://get.helm.sh/helm-v3.3.0-linux-amd64.tar.gz
tar -zxf helm-v3.3.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
helm version
显示:version.BuildInfo{Version:"v3.3.0", GitCommit:"8a4aeec08d67a7b84472007529e8097ec3742105", GitTreeState:"dirty", GoVersion:"go1.14.7"}
则安装成功
5.5Pod管理:单容器
6.1~6.2
版本不同可能有差别,自己Tab一下看看
# rz ----导入安装包
# tar -zxvf Python-3.6.1.tgz
# cd Python-3.6.1
# ./configure
# make && make install
[root@master ~]# rm -f /usr/bin/python
[root@master ~]# ln -s /usr/bin/python3 /usr/bin/python
安装huaweicloud-sdk-python库
[root@master ~]# pip install huaweicloud-sdk-python
2、云服务器组管理
在华为云创建和查看 AK和SK下面要用
然后继续上一步中的xshell里执行:
[root@master ~]# pip install huaweicloudsdkcore
[root@master ~]# pip install huaweicloudsdkecs
[root@master ~]# export PYTHONPATH=/usr/local/lib/python3.6/site-packages:$PYTHONPATH
[root@master ~]# export PYTHONPATH=/usr/local/lib64/python3.6/site-packages:$PYTHONPAH
[root@master ~]# mkdir /root/huawei
[root@master ~]# vi /root/huawei/create_server_group.py
# coding: utf-8
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkecs.v2.region.ecs_region import EcsRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkecs.v2 import *
if __name__ == "__main__":
ak = "XWILDPGGSQG3CN1K3GAD"
sk = "n8KxxsC04W7zfDjWoC3obXfNscm9lDiZttnk00yv"
credentials = BasicCredentials(ak, sk) \
client = EcsClient.new_builder() \
.with_credentials(credentials) \
.with_region(EcsRegion.value_of("cn-north-4")) \
.build()
try:
request1 = CreateServerGroupRequest()
listPoliciesServerGroup = [
"anti-affinity"
]
serverGroupbody = CreateServerGroupOption(
name="chinaskills_server_group",
policies=listPoliciesServerGroup
)
request1.body = CreateServerGroupRequestBody(
server_group=serverGroupbody
)
response1 = client.create_server_group(request1)
print(response1)
except exceptions.ClientRequestException as e:
print(e.status_code)
print(e.request_id)
print(e.error_code)
print(e.error_msg)
:wq <--(保存退出)
- 点赞
- 收藏
- 关注作者
评论(0)