【k8s-king】8-Linux常用命令学习

举报
yd_232190478 发表于 2023/11/14 19:56:02 2023/11/14
【摘要】 vi编辑器基本使用步骤:1.输入a,进入编辑模式此时提示为INSERT2.将内容输入or复制进去记得检查是否复制完全3.按键盘左上角Esc键退出编辑模式4.输入“:wq”进行保存退出

一、容器云

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地址。

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。