【ironman】部署k8s笔记
1.1-1.6私有云
1.1基础环境配置
使用提供的两台云主机,云主机类型使用8vCPU/16G/100G类型。自行检查安全组策略,以确保网络正常通信与ssh连接,然后按以下要求配置服务器:
(1)设置主节点主机名为master,设置从节点主机名为node;
(2)修改hosts文件将IP地址映射为主机名;
在第一台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.2 Yum源配置
使用提供的http服务地址,在http服务下,存在centos7.9的网络yum源,使用该http源作为安装服务的网络源。分别设置master节点和node节点的yum源文件http.repo。
使用提供的http服务地址http://10.24.1.46/centos/,在http服务下,存在centos7.9的网络yum源,使用该http源作为安装服务的网络源。分别设置master节点和node节点的yum源文件http.repo。
[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配置无秘钥ssh
配置master节点可以无秘钥访问node节点,配置完成后,尝试ssh连接node节点的hostname进行测试。
在master机器输入[root@master ~]# ssh-keygen -t rsa
然后连续点击三下回车键
在node机器同样输入[root@node ~]# ssh-keygen -t rsa
然后连续点击三下回车键
在master机器执行[root@master ~]# cd ~/.ssh
[root@master ~]# ssh-copy-id master
提示(yes/no)?时输入yes
提示password时输入主机的密码Abc@1234
[root@master ~]# ssh-copy-id node
同上
平台部署--部署容器云平台
使用master和node两台云主机,通过kubeeasy工具完成Kubernetes 1.22.1集群的搭建。
软件包地址为: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.11此处IP记得替换为自己的master和node机器的IP地址)
1.4
部署Istio服务网格
在Kubernetes集群上完成Istio服务网格环境的安装。
[root@master ~]# kubeeasy add --istio istio
1.5
6、部署KubeVirt虚拟化
在Kubernetes集群上完成KubeVirt虚拟化环境的安装。
[root@master ~]# kubeeasy add --virt kubevirt
1.6
部署Harbor仓库及Helm包管理工具
在master节点上完成Harbor镜像仓库及Helm包管理工具的部署。然后使用nginx镜像自定义一个Chart,Deployment名称为nginx,副本数为1,然后将该Chart部署到default命名空间下,Release名称为web。
[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【实操题】Linux文件操作(2分)
1、在root目录下,创建一个名为chinaskill的目录。并按照以下要求进行操作:
(1)在 chinaskill 目录下创建一个名为chinaskills.txt的空文本文件;
(2)复制chinaskills.txt到chinaskill目录下,并将其命名为chinaskills_copy.txt;
完成后提交控制节点的用户名、密码和IP地址到答题框。
1.mkdir chinaskill
cd chinaskill
touth chinaskills.txt
2.cp chinaskills.txt chinaskills_copy.txt
2.2linux用户操作
在Linux系统中,用户是非常重要的一个功能,按照以下要求进行用户操作:
(1)创建user01用户、创建用户的同时指定UID为3021,指定备注信息为Hllo user01;
(2)创建user02用户,创建usergroup01组,要求创建user02用户后,将user02用户的所属用户组更改为usergroup01;
(3)创建user03用户,指定家目录为/root/chinaskill;
完成后提交控制节点的用户名、密码和IP地址到答题框。
(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系统信息查询
查看当前系统的内核版本和当前内存空闲信息,内存单位为GB,将结果输出到/root/resources.txt文件中。
完成后提交控制节点的用户名、密码和IP地址到答题框
cat /etc/redhat-release > /root/resources.txt
free -g >> /root/resources.txt
2.4Docker创建容器操作
使用nginx镜像创建一个名为 chinaskills 的容器,确保容器在后台运行,并映射容器的80端口到主机的5080端口。
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.5 Docker查询容器操作
使用Docker命令列出当前系统上所有正在运行的容器,并输出应包含容器的ID、名称、使用的镜像等信息。将输出的信息重定向到/root/dockerinfo.txt文件中。
kubectl get pods -o wide > /root/dockerinfo.txt
还是用
docker ps > /root/dockerinfo.txt
2.6Docker内部操作
使用命令进入chinaskills容器,并且在容器的网页根目录下,将index.html文件的内容改成Hello Nginx。
docker exec -it chinaskills /bin/bash
echo "Hello Nginx" >/usr/share/nginx/html/index.html
2.7 Dockerfile编写
在容器节点上编写/root/nginx/Dockerfile文件构建chinaskill-nginx:v1.0镜像,具体要求如下:
(1)基础镜像:nginx:latest;
(2)index.html文件内容为Hello World;
(3)声明端口80;
(4)设置服务开机自启;
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
在master节点上编写/root/Pig/Dockerfile-mariadb文件构建pig-mariadb:v1.0镜像,具体要求如下:(需要用到的软件包:Pig.tar.gz)
(1)基础镜像:centos:centos7.9.2009;
(2)安装并初始化MariaDB,密码:root;
(3)将pig_codegen.sql、pig_config.sql、pig_job.sql、pig.sql导入数据库;
(4)声明端口:3306;
(5)设置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
在master节点上编写/root/Pig/Dockerfile-redis文件构建pig-redis:v1.0镜像,具体要求如下:(需要用到的软件包:Pig.tar.gz)
(1)基础镜像:centos:centos7.9.2009;
(2)安装redis服务;
(3)修改配置文件中的bind 127.0.0.1为bind 0.0.0.0;
(4)设置redis免密,并关闭保护模式;
(5)声明端口:6379;
(6)设置服务开机自启。
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
在master节点上编写/root/Pig/Dockerfile-pig文件构建pig-server:v1.0镜像,具体要求如下:(需要用到的软件包:Pig.tar.gz)
(1)基础镜像:centos:centos7.9.2009;
(2)安装openjdk服务;
(3)声明端口:3000、4000、8848、9999;
(4)使用提供的jar包启动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.2Python 运维开发:Pod 资源的 Restful APIs HTTP 服务封装
写 Python 程序实现Pod 资源管理程序,将 Pod 资源管理的封装成Web 服务。
在/root 目录下创建pod_server.py 程序,实现Pod 的增删查改等Web 访问操作。http.server 的 host 为 localhost,端口 8889;程序内部实现Kubernetes 认证。
提示说明:Python 标准库http.server 模块,提供了HTTP Server 请求封装。需要实现的 Restful API 接口如下:
GET /pod/{name} ,查询指定名称{name}的 Pod;Response 的 Body 以 json 格式输出。
POST /pod/{yamlfilename} 创建 yaml 文件名称为{yamlfilename}的 Pod;Response 的
Body 以 json 格式。
编码完成后,“手工下载”文件服务器主目录所有*.yaml 文件到 root 目录下,“手动执行”所编写pod_server.py 程序,提交答案进行检测。
[root@master ~]# curl -O http://mirrors.douxuedu.com/competition/k8s_Python_Packages.tar.gz
[root@master ~]# tar -zxf k8s_Python_Packages.tar.gz
[root@master ~]# ll
total 12584
-rw-r--r-- 1 root root 911783424 Aug 15 05:02 image.tar
-rw-r--r-- 1 root root 344352659 Aug 15 06:54 k8s_Python_Packages.tar.gz
drwxr-xr-x 2 root root 4096 Aug 15 02:59 Python_Packages
解压python-3.6.8.tar.gz,并安装python3环境,命令如下:
[root@master ~]# tar -zxf /root/Python_Packages/python-3.6.8.tar.gz
[root@master ~]# yum install -y /root/python-3.6.8/packages/*
[root@master ~]# pip3 --version
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
使用pip3命令安装开发环境依赖包,命令如下:
[root@master ~]# cd Python_Packages
[root@master Python_Packages]# pip3 install pip-21.1.3-py3-none-any.whl
[root@master ~]# pip3 install --no-index --find-links=/root/Python_Packages/ -r /root/Python_Packages/requirements.txt
(k8s-king-king)容器云Python运维开发案例(Python调用Kubernetes API)-云社区-华为云 (huaweicloud.com)
[root@master ~]# vi python-dev-pod-nginx2.yaml
apiVersion: v1
kind: Pod
metadata:
name: python-dev-pod-nginx2
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 9081
protocol: TCP[root@master ~]# vi api_pod_manager.py
# ===========================================
# Copyright Jiangsu One Cloud Technology Development Co. LTD. All Rights Reserved.
# ===========================================import requests,json,time,yamlimport urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
def get_token(api_token,):
bearer_token = "bearer " + api_token
return bearer_token
class pod_manager:
def __init__(self,node_url,bearer_token):
self.node_url = node_url
self.bearer_token = bearer_token
def create_pod(self,yamlFile,namespace):
headers = {
"Content-Type": "application/json",
"Authorization": self.bearer_token
}
with open(yamlFile,encoding='utf-8')as f:
body = json.dumps(yaml.safe_load(f))
url = self.node_url + "/api/v1/namespaces/" + namespace + "/pods"
req = json.loads(requests.post(url,headers=headers,data=body,verify=False).text)
return req
def get_pod(self,pod_name,namespace):
headers = {
"Authorization": self.bearer_token
}
url = self.node_url + "/api/v1/namespaces/" + namespace + "/pods/" + pod_name
req = json.loads(requests.get(url,headers=headers,verify=False).text)
return req
def delete_pod(self,pod_name,namespace):
headers = {
"Authorization": self.bearer_token
}
url = self.node_url + "/api/v1/namespaces/" + namespace + "/pods/" + pod_name
req = requests.delete(url,headers=headers,verify=False)
resp = json.loads(req.text)
if req.status_code == 200:
print(f"delete_pod_success:{resp}",req.status_code)
else:
print(f" delete_pod_fail",req.status_code)
return
def get_api_server_token(api_server_token, node_url):
# Bearer token
bearer_token = "bearer " + api_server_token
return bearer_token
def get_api_pod_manager():
api_server_token = "eyJhbGciOiJSUzI1NiIsImtpZCI6ImtTS2JRR0ZfeC1PZ05oWUsyWkt2TV9WRjA4VjV4NUdELTl1d3ZGNGNIZTQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbjEiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiYWRtaW4xIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiM2I1M2MyYzctNTc2YS00MDVlLTg5MDYtYTVhOTg4YmFjNGY1Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmFkbWluMSJ9.g6xoY3AgEoAP4t0ZZWDhUncBKXtx6CLsx122ujYArQX5BXS2PeyEdz3n1WJZZAqwbqADLdC1WDjVitQgb0bl1mn_CKaPLXjn5IbNwrpYLOlFVAi60ENFxFHDNGtaIrrS_YAfOUG342t0IBCM87PwYulrYNGNYwY0zrVYE8xWHbr8Ij5wyjh79roAnZWHRQFFicT2fpTvQN7BAPYUilefITgh0qvfXhZkVjA0KRnCTkbGVay5mEIA8uTJx8V9PeyY3TAP_ZBRR_GHAdSIpM47D1l8pUgWyBO_cVpWnHURDgaLMp4s5gCmXkJlbuTC2f07-Patgh7ntHZ4E39N2IA"
cluster_server_url = "https://10.26.7.60:6443"
node_url = "https://10.26.7.60:6443"
bearer_token = get_api_server_token(api_server_token, cluster_server_url)
pod_m = pod_manager(node_url,bearer_token)
return pod_m
if __name__ == "__main__":
api_token = "eyJhbGciOiJSUzI1NiIsImtpZCI6ImtTS2JRR0ZfeC1PZ05oWUsyWkt2TV9WRjA4VjV4NUdELTl1d3ZGNGNIZTQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbjEiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiYWRtaW4xIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiM2I1M2MyYzctNTc2YS00MDVlLTg5MDYtYTVhOTg4YmFjNGY1Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmFkbWluMSJ9.g6xoY3AgEoAP4t0ZZWDhUncBKXtx6CLsx122ujYArQX5BXS2PeyEdz3n1WJZZAqwbqADLdC1WDjVitQgb0bl1mn_CKaPLXjn5IbNwrpYLOlFVAi60ENFxFHDNGtaIrrS_YAfOUG342t0IBCM87PwYulrYNGNYwY0zrVYE8xWHbr8Ij5wyjh79roAnZWHRQFFicT2fpTvQN7BAPYUilefITgh0qvfXhZkVjA0KRnCTkbGVay5mEIA8uTJx8V9PeyY3TAP_ZBRR_GHAdSIpM47D1l8pUgWyBO_cVpWnHURDgaLMp4s5gCmXkJlbuTC2f07-Patgh7ntHZ4E39N2IA"
node_url = "https://10.26.7.60:6443"
bearer_token = get_token(api_token,)
pod_m = pod_manager(node_url,bearer_token)
# 1delete
delete_pod = pod_m.delete_pod("python-dev-pod-nginx2", "default")
#2create
create_pod = pod_m.create_pod("python-dev-pod-nginx2.yaml","default")
print(f"create_pods:{create_pod}")
#3get pod
get_pod = pod_m.get_pod("python-dev-pod-nginx2","default")
print(f"get_pods:{get_pod}")
#4delete
delete_pod = pod_m.delete_pod("python-dev-pod-nginx2","default")
[root@master ~]# vi pod_server.py
# ===========================================
# Copyright Jiangsu One Cloud Technology Development Co. LTD. All Rights Reserved.
# ===========================================import requestsimport threading
from http.server import HTTPServer, BaseHTTPRequestHandlerimport jsonPORT = 8889
# request handlerimport api_pod_manager
pod_m = api_pod_manager.get_api_pod_manager()
class MyHandler(BaseHTTPRequestHandler):
#Header setting
def _set_headers(self,content_type):
self.send_response(200) # 200 stands for request succeeded
self.send_header("Content-type", content_type) # informs requests of the Media type
self.end_headers()
def do_GET(self):
self._set_headers("application/json")
print(self.path)
# /pod/name
if self.path.startswith('/pod/'):
name = self.path[5:]
print(name)
result = pod_m.get_pod(name, "default")
# converts dictionary to a JSON string
json_string = json.dumps(result)
self.wfile.write(json_string.encode(encoding='utf_8'))
else:#
json_string = json.dumps({'path': 'home', 'received': 'ok'})
self.wfile.write(json_string.encode(encoding='utf_8'))
def do_POST(self):
self._set_headers("application/json")
print(self.path)
if self.path.startswith('/pod/'):
filename = self.path[5:]
print(filename)
result = pod_m.create_pod(filename, "default")
# converts dictionary to a JSON string
json_string = json.dumps(result)
self.wfile.write(json_string.encode(encoding='utf_8'))
def do_DELETE(self):
self._set_headers("application/json")
print(self.path)
if self.path.startswith('/pod/'):
name = self.path[10:]
print(name)
result = pod_m.delete_pod(name,"default")
def run(server_class=HTTPServer, handler_class=MyHandler, addr="localhost", port=PORT):
server_address = (addr, port)
httpd = server_class(server_address, handler_class)
print(f"Starting httpd server on {addr}:{port}") # f before string allows special formatting
httpd.serve_forever()
#startif __name__ == "__main__":
print("---------start web ----------------")
run()print("---------end web----------------")
[root@master ~]# python3 api_pod_manager.py[root@master ~]# python3 pod_server.py---------start web ----------------
Starting httpd server on localhost:8889
公有云
https://blog.csdn.net/qihan1124/article/details/127095027 浏览器公有云部分答案
获取AK,SK点击我的凭证-访问密钥-新增访问密钥
私有网络管理:虚拟私有云vpc
云实例管理步骤:控制台-弹性云服务器-购买弹性云服务器
设置密码需要在管理一栏中点击“现在设置”
创建MySQL只读:
1.登录管理控制台。
2.单击管理控制台左上角的,选择区域。
3.单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
4.在“实例管理”页面,选择指定的实例,单击操作列的“更多 > 创建只读”,进入“创建只读”页面。
5.在“创建只读”页面,填选实例相关信息后,单击“立即创建”
创建虚拟私有云
- 服务列表>网络>虚拟私有云 VPC
- 根据题目要求配置虚拟私有云的基本信息
创建安全组
1.控制台列表找到“访问控制>安全组”
2.点击右上角“创建安全组”
3.根据题目要求配置信息
弹性公网 IP
1.弹性公网 IP 和带宽>弹性公网 IP
2.点击购买弹性公网 IP
3.根据题目要求进行配置
对等连接
- 左侧网络控制台列表,点击“对等连接”
- 根据题目需要配置
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', '');
5.1创建云容器引擎
集群类型使用原集群
节点配置信息需要创建完后进行配置
5.2安装 dashboard 插件
安装DashBoard
在kcloud容器集群中安装Kubernetes DashBoard可视化监控界面,nodePort为30550,完成后,提交Kubernetes DashBoard访问地址到答题框。
① 打开 kcloud 云容器引擎>插件管理,找到 dashboard 插件,点击下方的安
装插件按钮,安装 dashboard 插件。
② 配置插件规格为“单实例”,证书配置使用“默认证书”,其余选项默
认,完成后点击“安装”,
③ 在插件管理>插件实例中可以找到运行中的 dashboard 实例,点击其名称
进入插件实例详情。
④ 点击 dashboard 插件中的“访问”,将 token 粘贴至下方框中,点击登录
即可访问 dashboard 页面。
5.3使用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
提交时使用的是kcloud集群节点的用户名、密码和公网IP地址
5.4安装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"}
则安装成功
6.1python环境准备
通过华为云控制台,选择北京四区域,创建一台x86架构云主机,按需计费的2核,4G,硬盘50G的云实例,实例名为ChinaSkill,选择镜像为CentOS 7.5 64bit(40GB),分配独立的公网IP,带宽选择按使用流量计费5M。
登录此云服务器,安装Python3.6.8 SDK,安装huaweicloud-sdk-python库。
xshell连接云主机,执行:
安装Python
# 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
6.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:$PYTHONPATH
[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 = "90VV22DIMCUT1HYQANTW"
sk = "vxibUyMlmXQMqnjTNdEKE46ZNBQsLZr5tAeYOksC"
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)
注意:上面代码中的ak和sk要进行替换,cn-north-4这个字符串也要根据题目要求所在区域进行替换,参考:
https://console.huaweicloud.com/apiexplorer/#/openapi/ECS/sdk?api=CreateServerGroup
[root@master ~]# python /root/huawei/create_server_group.py
完成后提交本云服务器的用户名、密码和公网IP地址。
- 点赞
- 收藏
- 关注作者
评论(0)