实用教程丨使用K3s和MySQL运行Rancher 2.4 (2)

接下来,使用健康的探针(probe)创建负载均衡器

az network lb create \ --resource-group RancherK3sResourceGroup \ --name K3sLoadBalancer \ --sku standard \ --public-ip-address RancherLBPublicIP \ --frontend-ip-name myFrontEnd \ --backend-pool-name myBackEndPool az network lb probe create \ --resource-group RancherK3sResourceGroup \ --lb-name K3sLoadBalancer \ --name myHealthProbe \ --protocol tcp \ --port 80

负载均衡器创建完成后,更新NSG。添加80和443端口,用于访问Rancher Server,再添加一个6443端口,用于访问K3s的Kubernetes API。

az network nsg rule create \ --resource-group RancherK3sResourceGroup \ --nsg-name RancherK3sNSG1 \ --name myNetworkSecurityGroupRuleHTTP \ --protocol tcp \ --direction inbound \ --source-address-prefix '*' \ --source-port-range '*' \ --destination-address-prefix '*' \ --destination-port-range 80 443 6443 \ --access allow \ --priority 200

现在以三个规则的形式添加负载均衡器配置。你需要一个用于端口80的规则和一个用于端口443的规则,以分散两个VM上Rancher Server的负载。第三条规则用于端口6443,该端口可访问在每个VM上运行的Kubernetes API。

az network lb rule create \ --resource-group RancherK3sResourceGroup \ --lb-name K3sLoadBalancer \ --name myHTTPRule \ --protocol tcp \ --frontend-port 80 \ --backend-port 80 \ --frontend-ip-name myFrontEnd \ --backend-pool-name myBackEndPool \ --probe-name myHealthProbe az network lb rule create \ --resource-group RancherK3sResourceGroup \ --lb-name K3sLoadBalancer \ --name myHTTPSRule \ --protocol tcp \ --frontend-port 443 \ --backend-port 443 \ --frontend-ip-name myFrontEnd \ --backend-pool-name myBackEndPool \ --probe-name myHealthProbe az network lb rule create \ --resource-group RancherK3sResourceGroup \ --lb-name K3sLoadBalancer \ --name myHTTPS6443Rule \ --protocol tcp \ --frontend-port 6443 \ --backend-port 6443 \ --frontend-ip-name myFrontEnd \ --backend-pool-name myBackEndPool \ --probe-name myHealthProbe Azure数据库即服务(DaaS)

使用K3s作为Kubernetes发行版的好处之一是它支持etcd的替代版本,在本例中,我们将使用Azure数据库中的MySQL作为数据库。

要创建MySQL数据库,请运行以下CLI命令。

首先让我们为数据库服务器的名称创建一个变量,这样可以让运行后续命令更加容易。注意数据库服务器的名称在整个Azure必须是唯一的,否则你将会在创建时出错。

K3smysqlserver=<unique-myslq-server-name>

创建你的MySQL 服务器。如果名称不是唯一的,将显示错误。如果是,那么使用新名称更新变量,然后再次运行此命令。

az mysql server create --resource-group RancherK3sResourceGroup --name $K3smysqlserver --admin-user myadmin --admin-password Password1 --sku-name GP_Gen5_2 --version 5.7

创建防火墙规则以允许所有的Azure IP可以访问你的数据库服务器。

az mysql server firewall-rule create --resource-group RancherK3sResourceGroup --server $K3smysqlserver --name "AllowAllWindowsAzureIps" --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0

为现有的子网添加service endpoint。

az network vnet subnet update --vnet-name RancherK3sVnet --name RancherK3sSubnet --service-endpoints "Microsoft.Sql"

将vnet规则添加到数据库访问。

az mysql server vnet-rule create --server $K3smysqlserver --name MyK3sVNetRule \ -g RancherK3sResourceGroup --subnet RancherK3sSubnet --vnet-name RancherK3sVnet

为数据库通信禁用TLS

az mysql server update --resource-group RancherK3sResourceGroup --name $K3smysqlserver --ssl-enforcement Disabled

在Azure Cloud Shell中已经安装好MySQL CLI工具了。下一步是连接到MySQL服务器并创建一个数据库。

连接到新的MySQL服务器。

mysql --host $K3smysqlserver.mysql.database.azure.com --user myadmin@$K3smysqlserver -p

检查状态,确保MySQL正在运行。

status

创建一个空的数据库。

CREATE DATABASE kubernetes; SHOW DATABASES; exit Azure虚拟机

接下来,我们将创建2个虚拟机并在它们上面安装K3s。

网络接口

创建所有网络元素后,我们可以为VM创建网络接口卡(NIC)。

az network nic create --resource-group RancherK3sResourceGroup --name nic1 --vnet-name RancherK3sVnet --subnet RancherK3sSubnet --network-security-group RancherK3sNSG1 --public-ip-address RancherK3sPublicIP1 --lb-name K3sLoadBalancer --lb-address-pools myBackEndPool az network nic create --resource-group RancherK3sResourceGroup --name nic2 --vnet-name RancherK3sVnet --subnet RancherK3sSubnet --network-security-group RancherK3sNSG1 --public-ip-address RancherK3sPublicIP2 --lb-name K3sLoadBalancer --lb-address-pools myBackEndPool 创建虚拟机

要创建2个虚拟机,首先需要使用我们的cloud-init配置创建一个文本文件。这将部署Docker、添加ubuntu用户到docker组并安装K3s。

cat << EOF > cloud-init.txt #cloud-config package_upgrade: true packages: - curl output: {all: '| tee -a /var/log/cloud-init-output.log'} runcmd: - curl https://releases.rancher.com/install-docker/18.09.sh | sh - sudo usermod -aG docker ubuntu - curl -sfL https://get.k3s.io | sh -s - server --datastore-endpoint="mysql://myadmin@$K3smysqlserver:Password1@tcp($K3smysqlserver.mysql.database.azure.com:3306)/kubernetes" EOF

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjwfs.html