【k8s-king】8-Linux常用命令学习
一、容器云
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
2、Yum源配置
使用提供的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=httpiso
baseurl=http://10.24.1.46/centos/
gpgcheck=0
enable=1
注意“http://10.24.1.46/centos/”这个地址要用提供的http服务地址
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
同上
4、平台部署--部署容器云平台
使用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.0.1.iso
[root@master ~]# mount -o loop chinaskills_cloud_paas_v2.0.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.24.2.10,10.24.2.11 --user root --password Abc@1234 --offline-file /opt/dependencies/base-rpms.tar.gz
[root@master ~]# kubeeasy install kubernetes --master 10.24.2.10 --worker 10.24.2.11 --user root --password Abc@1234 --version 1.22.1 --offline-file /opt/kubernetes.tar.gz
(注意 软件包地址用提供的;10.24.2.10,10.24.2.11此处IP记得替换为自己的master和node机器的IP地址)
5、部署Istio服务网格
在Kubernetes集群上完成Istio服务网格环境的安装。
[root@master ~]# kubeeasy add --istio istio
6、部署KubeVirt虚拟化
在Kubernetes集群上完成KubeVirt虚拟化环境的安装。
[root@master ~]# kubeeasy add --virt kubevirt
7、部署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
8、备份ETCD
若提供etcd的下载地址,则执行:
[root@master ~]# curl -O 【提供的etcd下载地址】
[root@master ~]# tar -xvf 【etcd的文件名】
若上面没有地址则继续下面,安装etcd工具也可能会失败,失败则跳过不做
[root@master ~]# tar -xvf /opt/ 【etcd的文件名】
[root@master ~]# cd etcd-v3.5.1-linux-amd64【此处目录要跟实际etcd的目录一致】/
[root@master ~]# cp etcd etcdctl /usr/bin/
[root@master ~]# cd ..
[root@master ~]# vi /etc/etcd.conf
## 编辑如下内容
ETCD_NAME="etcd" ##节点名称
ETCD_DATA_DIR="/var/lib/etcd" ##数据目录
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" ##监听地址
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379" ##别人连我的地址
[root@master ~]# vi /usr/lib/systemd/system/etcd.service
## 编辑如下内容
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile=/etc/etcd.conf
ExecStart=/usr/bin/etcd
Restart=on-failure
LimitNOFILE=65536
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl start etcd
[root@master ~]# systemctl enable etcd
[root@master ~]# ETCDCTL_API=3 etcdctl snapshot save etcd.db --endpoints=http://127.0.0.1:2379
9、Kubernetes平台内存优化
[root@master ~]# echo always > /sys/kernel/mm/transparent_hugepage/enabled
10、防止SYN攻击
[root@master ~]# vi /etc/sysctl.conf
##编辑添加如下内容
net.ipv4.tcp_synack_retries = 0
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_max_syn_backlog = 20480
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10
fs.file-max = 819200
net.core.somaxconn = 65536
net.core.rmem_max = 1024123000
net.core.wmem_max = 16777126
net.core.netdev_max_backlog = 165536
net.ipv4.ip_local_port_range = 10000 65535
二、云服务运维
1、容器化部署MariaDB
[root@master ~]# wget http://10.24.1.46/competition/Pig.tar.gz
[root@master ~]# tar -xvf Pig.tar.gz
[root@master ~]# docker load -i Pig/CentOS_7.9.2009.tar
[root@master ~]# init-cluster
[root@master ~]# cd Pig/
[root@master Pig]# vi 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 on *.* to 'root'@'%' identified by 'root';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;"
编写yum源:
[root@master Pig]# vi local.repo
[pig]
name=pig
baseurl=file:///root/yum
gpgcheck=0
enabled=1
编写Dockerfile文件:
[root@master Pig]# vi Dockerfile-mariadb
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
ENV LC_ALL en_US.UTF-8
RUN yum -y install mariadb-server
COPY mysql /opt/
COPY mysql_init.sh /opt/
RUN bash /opt/mysql_init.sh
EXPOSE 3306
CMD ["mysqld_safe","--user=root"]
构建镜像:
[root@master Pig]# docker build -t pig-mysql:v1.0 -f Dockerfile-mariadb .
2、容器化部署Redis
[root@master Pig]# vi Dockerfile-redis
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum -y install redis
RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/redis.conf && \
sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
EXPOSE 6379
CMD ["/usr/bin/redis-server","/etc/redis.conf"]
构建镜像
[root@master Pig]# docker build -t pig-redis:v1.0 -f Dockerfile-redis .
3、容器化部署Pig
编写启动脚本:
[root@master Pig]# vi pig_init.sh
#!/bin/bash
sleep 20
nohup java -jar /root/pig-register.jar $JAVA_OPTS >/dev/null 2>&1 &
sleep 20
nohup java -jar /root/pig-gateway.jar $JAVA_OPTS >/dev/null 2>&1 &
sleep 20
nohup java -jar /root/pig-auth.jar $JAVA_OPTS >/dev/null 2>&1 &
sleep 20
nohup java -jar /root/pig-upms-biz.jar $JAVA_OPTS >/dev/null 2>&1
编写Dockerfile文件:
[root@master Pig]# vi Dockerfile-pig
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
COPY service /root
ADD yum /root/yum
RUN rm -rfv /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/local.repo
RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
COPY pig_init.sh /root
RUN chmod +x /root/pig_init.sh
EXPOSE 8848 9999 3000 4000
CMD ["/bin/bash","/root/pig_init.sh"]
构建镜像
[root@master Pig]# docker build -t pig-service:v1.0 -f Dockerfile-pig .
4、容器化部署前端服务
编写Dockerfile:
[root@master Pig]# vi Dockerfile-nginx
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum -y install nginx
COPY nginx/dist /data
ADD nginx/pig-ui.conf /etc/nginx/conf.d/
RUN /bin/bash -c 'echo init ok'
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
构建镜像:
[root@master Pig]# docker build -t pig-ui:v1.0 -f Dockerfile-nginx .
5、编排部署Pig开发平台
编写docker-compose.yaml编排文件:
[root@master Pig]# vi docker-compose.yaml
version: '2'
services:
pig-mysql:
environment:
MYSQL_ROOT_PASSWORD: root
restart: always
container_name: pig-mysql
image: pig-mysql:v1.0
ports:
- 3306:3306
links:
- pig-service:pig-register
pig-redis:
image: pig-redis:v1.0
ports:
- 6379:6379
restart: always
container_name: pig-redis
hostname: pig-redis
links:
- pig-service:pig-register
pig-service:
ports:
- 8848:8848
- 9999:9999
restart: always
container_name: pig-service
hostname: pig-service
image: pig-service:v1.0
extra_hosts:
- pig-register:127.0.0.1
- pig-upms:127.0.0.1
- pig-gateway:127.0.0.1
- pig-auth:127.0.0.1
- pig-hou:127.0.0.1
stdin_open: true
tty: true
privileged: true
pig-ui:
restart: always
container_name: pig-ui
image: pig-ui:v1.0
ports:
- 8888:80
links:
- pig-service:pig-gateway
部署服务
[root@master Pig]# docker-compose up -d
查看服务:
[root@master Pig]# docker-compose ps
6、Pod管理--创建Pod
在default命名空间下使用nginx:latest镜像创建一个QoS类为Guaranteed的Pod,名称为qos-demo。
[root@master Pig]# vi nginx1.yaml
apiVersion: v1
kind: Pod
metadata:
name: qos-demo
spec:
containers:
- name: qos-demo-ctr
image: nginx:latest
resources:
limits:
memory: "200Mi"
cpu: "700m"
requests:
memory: "200Mi"
cpu: "700m"
[root@master Pig]# kubectl apply -f nginx1.yaml
https://blog.csdn.net/qq_34939308/article/details/122771075
7、安全管理--配置Pod安全上下文
使用busybox镜像启动一个名为context-demo的Pod,为该Pod配置安全上下文,要求容器内以用户1000和用户组3000来运行所有进程,并在启动时执行“sleep 1h”命令。
[root@master Pig]# vi context1.yaml
apiVersion: v1
kind: Pod
metadata:
name: context-demo
spec:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
volumes:
- name: sec-ctx-vol
emptyDir: {}
containers:
- name: sec-ctx-demo
image: busybox:latest
command: ["sh", "-c", "sleep 1h"]
volumeMounts:
- name: sec-ctx-vol
mountPath: /data/demo
securityContext:
allowPrivilegeEscalation: false
[root@master Pig]# kubectl apply -f context1.yaml
8、基于Kubernetes构建CI/CD案例
【k8s-king】3-基于Kubernetes构建CI/CD持续集成 (huaweicloud.com)
三、运维开发任务
1、Kubernetes Python运维开发:使用SDK方式管理deployment服务
2、Kubernetes Python运维开发:使用Restful API方式管理service服务
1. 开发环境安装
将提供的开发环境软件包k8s_Python_Packages.tar.gz上传至提供的单节点虚拟机的/root目录下,并解压,命令如下:
[root@master ~]# curl -O http://mirrors.douxuedu.com/competition/k8s_Python_Packages.tar.gz
[root@master ~]# tar -zxf k8s_Python_Packages.tar.gz
解压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
[root@master ~]# cd ..
2. 基于Kubernetes Restful API实现Deployment创建
使用所提供的k8s-allinone-dev虚拟机环境。根据上一步骤配置好所需的开发环境,登录默认账号密码为“root/Abc@1234”。
使用Kubernetes Restful API库,在/root目录下,创建api_manager_service.py文件,要求编写python代码,代码实现以下任务:
① 编写Python程序实现Deployment资源的创建。Deployment配置信息如下。如果同名Deployment存在,先删除再创建。
② 创建完成后,查询该Deployment的详细信息,执行结果控制台输出到当前目录下的service_api_dev.json文件中。
创建Deployment 的yaml的配置如下:
# service.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-svc
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
创建用户并生成token,命令如下:
[root@master ~]# kubectl create serviceaccount admin1 -n kube-system
[root@master ~]# kubectl create clusterrolebinding admin1 --clusterrole=cluster-admin --serviceaccount=kube-system:admin1
[root@master ~]# cat<<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
name: admin1
namespace: kube-system
annotations:
kubernetes.io/service-account.name: "admin1"
EOF【这里键盘按键ctrl+d】
[root@master ~]# kubectl describe secret admin1 -n kube-system
eyJhbGciOiJSUzI1NiIsImtpZCI6ImtTS2JRR0ZfeC1PZ05oWUsyWkt2TV9WRjA4VjV4NUdELTl1d3ZGNGNIZTQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbjEiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiYWRtaW4xIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiM2I1M2MyYzctNTc2YS00MDVlLTg5MDYtYTVhOTg4YmFjNGY1Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmFkbWluMSJ9.g6xoY3AgEoAP4t0ZZWDhUncBKXtx6CLsx122ujYArQX5BXS2PeyEdz3n1WJZZAqwbqADLdC1WDjVitQgb0bl1mn_CKaPLXjn5IbNwrpYLOlFVAi60ENFxFHDNGtaIrrS_YAfOUG342t0IBCM87PwYulrYNGNYwY0zrVYE8xWHbr8Ij5wyjh79roAnZWHRQFFicT2fpTvQN7BAPYUilefITgh0qvfXhZkVjA0KRnCTkbGVay5mEIA8uTJx8V9PeyY3TAP_ZBRR_GHAdSIpM47D1l8pUgWyBO_cVpWnHURDgaLMp4s5gCmXkJlbuTC2f07-Patgh7ntHZ4E39N2IA
创建python文件并执行(注意api_token 的格式),命令如下:
[root@master ~]# vi api_manager_service.py
# ===========================================
# Copyright Jiangsu One Cloud Technology Development Co. LTD. All Rights Reserved.
# ===========================================
import requests,json,yaml,time
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
def get_token(api_token,):
bearer_token = "bearer " + api_token
return bearer_token
class dep_manager:
def __init__(self,node_url,bearer_token):
self.node_url = node_url
self.bearer_token = bearer_token
def create_dep(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 + "/apis/apps/v1/namespaces/" + namespace + "/deployments"
req = json.loads(requests.post(url, headers=headers, data=body, verify=False).text)
return req
def get_dep(self,dep_name,namespace):
headers = {
"Authorization": self.bearer_token
}
url = self.node_url + "/apis/apps/v1/namespaces/" + namespace + "/deployments/" + dep_name
req = json.loads(requests.get(url, headers=headers, verify=False).text)
return req
if __name__ == "__main__":
api_token = "eyJhbGciOiJSUzI1NiIsImtpZCI6Imh1bDNRWlNXRnQ3bXFSc1VRMGJYVWJja191SEFJZW1rcHRKUXhfc2NiTFkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbjEiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiYWRtaW4xIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYTAxNmVhNjgtY2I4MS00YzI2LWE2YzUtMzcwOTU5YjJlNjc3Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmFkbWluMSJ9.w45_llDE23ve55tUjmP9GEC-e9vBqSF5L9W8pcjDiAlIlpHffJhqmSLMZJ7DMruu0vEabbhOL4Uo49ppR0lvpELQX5-e4pQ_S6VJ1VdwOhelIevaH5bbB04xVvZXal2kbrFhwZLxJCiwXaiUsUqIhnUk9fmPFChNsex3ydRU3R36ivxJ2MZtlNY6MRtnczD7fFCHRxP1ksEDkONX0BUSLzOFUedouTh5e_3rksWD8P-xHqE0dXZndUGPklrxg0-fdqoP_lZ7NSxsMDOEmb_NTjYERSjHgITNI7u0vVff3OVB6ZuwZj3LmIIn0iO7Nwuni1oEROLyiAucQgLoTSrXYw"
node_url = "https://10.26.4.62:6443"
bearer_token = get_token(api_token, )
dep_m = dep_manager(node_url,bearer_token)
#create
dep_create = dep_m.create_dep("service.yaml","default")
time.sleep(10)
# print(f"create_deployment:{dep_create}")
#get
get_dep = dep_m.get_dep("nginx-svc","default")
print(get_dep)
# print(f"get_Deployment:{get_dep}")
[root@master ~]# python3 api_manager_service.py > service_api_dev.json
3. 基于Kubernetes Python SDK实现Job创建
在前面已建好的Kubernetes开发环境云平台上。使用Kubernetes python SDK的“kubernetes”Python库,在/root目录下,创建sdk_job_manager.py文件,要求编写python代码,代码实现以下任务:
① 编写Python程序实现Job资源的创建。Job配置信息如下。如果同名Job存在,先删除再创建。
② 创建完成后,查询该Job的详细信息,执行结果控制台输出,以json格式展示。
Job创建yaml的信息如下:
# vi nginx-deployment.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
spec:
containers:
- name: pi
image: perl
imagePullPolicy: IfNotPresent
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
backoffLimit: 4
[root@master ~]# cp /root/.kube/config .
[root@master ~]# ctr -n k8s.io images import image.tar
[root@master ~]# vi sdk_manager_deployment.py
# ===========================================
# Copyright Jiangsu One Cloud Technology Development Co. LTD. All Rights Reserved.
# ===========================================
import json
import os
import yaml
from kubernetes import client, config
from os import path
class job_manager():
def __init__(self, config_file):
config.load_kube_config(config_file)
self.api = client.BatchV1Api()
def create_job(self, yamlFile):
v1 = self.api
fileNamePath = os.path.split(os.path.realpath(__file__))[0]
yamlPath = os.path.join(fileNamePath, yamlFile)
# print("-------create job-------------")
with open(yamlPath, encoding="utf8") as f:
result = yaml.safe_load(f)
resp = v1.create_namespaced_job(namespace="default",body=result)
# print(resp)
def get_job(self):
v1 = self.api
# print("-------read job-------------")
resp = v1.read_namespaced_job(name="pi", namespace="default")
print(resp)
def delete_job(self):
v1 = self.api
resp = v1.delete_namespaced_job(name="pi", namespace="default", propagation_policy='Background',)
print(resp)
if __name__ == '__main__':
job_manager(config_file="config").create_job(yamlFile="nginx-deployment.yaml")
job_manager(config_file="config").get_job()
[root@master ~]# python3 sdk_manager_deployment.py > deployment_sdk_dev.json
四、公有云服务搭建
只读数据库
创建只读数据库,然后点击chinaskill-mysql
创建数据库代理
创建后,刷新数据库代理页面,可以看到读写分离地址已生成,即成功
云备份
(1)云备份控制台
选择华为云平台首页左上角服务列表,选择并点击“存储>云备份CBR”进入云备份控制台,如图1所示。
图1 云备份服务
(2)购买云服务器备份存储库
进入云备份控制台后,在当前页面云服务器备份中选择“购买存储库”,如图2所示。
图2 购买存储库
在配置页面选择计费模式为“按需计费”,
保护类型为“备份”,
数据库备份暂不启用,
选择服务器为“暂不配置”,
存储库容量为100G,其他选项均为默认,配置完成后点击右下角“立即购买”按钮,如图3所示。
图3 存储库参数配置
在云备份控制台可以查看到购买的备份库列表信息,如图4所示。
图4 存储库列表
(3)绑定服务器
点击备份库的绑定服务器按钮,进入绑定服务器页面。如图5所示。
图5 云备份控制台
选择node2节点,将其绑定至此备份库中。点击确定按钮。如图6所示。
图6 绑定服务器
成功绑定服务器列表,如图7所示。
图7 成功绑定
(3)执行备份
点击执行备份
将存储库server_backup对应的ID复制提交
五、公有云服务运维
1. 传输文件到xshell
sz:将选定的文件发送(send)到本地机器
rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器
有这提示就是没装,接下来就动动手装一下吧。
安装命令:
yum install lrzsz
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地址
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"}
则安装成功
5、【实操题】云硬盘存储卷
云容器实例CCI----存储管理----云硬盘存储卷
六、公有云运维开发
1、python环境准备
通过华为云控制台,选择北京四区域,创建一台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
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)