【ironman】部署k8s笔记

举报
yd_232190478 发表于 2024/11/15 15:42:38 2024/11/15
【摘要】 1.1-1.6私有云1.1基础环境配置使用提供的两台云主机,云主机类型使用8vCPU/16G/100G类型。自行检查安全组策略,以确保网络正常通信与ssh连接,然后按以下要求配置服务器:(1)设置主节点主机名为master,设置从节点主机名为node;(2)修改hosts文件将IP地址映射为主机名; 在第一台master虚拟机执行:[root@xxx ~]hostnamectl set-ho...

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.在“创建只读”页面,填选实例相关信息后,单击“立即创建”

 

创建虚拟私有云

  1. 服务列表>网络>虚拟私有云 VPC
  2. 根据题目要求配置虚拟私有云的基本信息

创建安全组

1.控制台列表找到“访问控制>安全组

2.点击右上角“创建安全组”

3.根据题目要求配置信息

弹性公网 IP

1.弹性公网 IP 和带宽>弹性公网 IP

2.点击购买弹性公网 IP

3.根据题目要求进行配置

对等连接

  1. 左侧网络控制台列表,点击“对等连接”
  2. 根据题目需要配置

 

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

 

 

 

 

 

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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