VMWare + ubuntu + minikube 部署AWX

2023 Nov 部署单机k8s minikube以及部署AWX

docker / minikube / nginx (用于监听虚拟机端口转发进miniku内部service)

minikube 部署 ingress addons 以及 awx-operator / awx-demo

任务比较紧急,手头没有k8s,所以就紧急使用minikube部署个AWX,如下是踩坑经过。。。

 

Docker apt key & install

* Install docker

sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

sudo apt install docker-ce -y

Docker setup aliyun mirror

sudo mkdir /etc/docker

sudo cat > /etc/docker/daemon.json <<EOF

{

    "exec-opts": ["native.cgroupdriver=systemd"],

    "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]

}

EOF

重新docker以及设置自启动

sudo systemctl daemon-reload

sudo systemctl restart docker

sudo systemctl enable docker


 

安装kubectl

sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list

deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main

EOF

apt update

sudo apt -y install  kubectl=1.28.2-00


 

安装minikube

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb

sudo dpkg -i minikube_latest_amd64.deb

启动minikube

minikube start --cpus=4 --memory=6g --force

追加minikube addons ingress

这个命令minikube addons images ingress,先查看使用的名字和镜像对应关系

minikube addons images ingress

| IngressController        | ingress-nginx/controller:v1.9.4@sha256:5b161f051d017e55d358435f295f5e9a297e66158f136321d9b04520ec6c48a3                        | registry.k8s.io  |

| KubeWebhookCertgenCreate | ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0@sha256:a7943503b45d552785aa3b5e457f169a5661fb94d82b8a3373bcd9ebaf9aac80 | registry.k8s.io  |

| KubeWebhookCertgenPatch  | ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0@sha256:a7943503b45d552785aa3b5e457f169a5661fb94d82b8a3373bcd9ebaf9aac80 | registry.k8s.io  |

addons的时候,指定--images name + image

minikube addons enable ingress --images="IngressController=registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.9.4,KubeWebhookCertgenCreate=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v20231011-8b53cabe0 ,KubeWebhookCertgenPatch=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v20231011-8b53cabe0 "

* ingress is an addon maintained by Kubernetes. For any concerns contact minikube on GitHub.

You can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS

  - Using image registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v20231011-8b53cabe0

  - Using image registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v20231011-8b53cabe0

  - Using image registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.9.4

* Verifying ingress addon...

* The 'ingress' addon is enabled

到这里,minikube k8s 部署完毕

root@k8su0:~# kubectl get pod -A

NAMESPACE       NAME                                        READY   STATUS      RESTARTS        AGE

ingress-nginx   ingress-nginx-admission-create-ncqkt        0/1     Completed   0               2m24s

ingress-nginx   ingress-nginx-admission-patch-f4fhx         0/1     Completed   3               2m24s

ingress-nginx   ingress-nginx-controller-56f5cd4fb9-qqbvc   1/1     Running     0               2m24s

kube-system     coredns-5dd5756b68-jdkk8                    1/1     Running     0               2m43s

kube-system     etcd-minikube                               1/1     Running     0               2m58s

kube-system     kube-apiserver-minikube                     1/1     Running     0               2m55s

kube-system     kube-controller-manager-minikube            1/1     Running     0               2m55s

kube-system     kube-proxy-h2p6d                            1/1     Running     0               2m43s

kube-system     kube-scheduler-minikube                     1/1     Running     0               2m55s

kube-system     storage-provisioner                         1/1     Running     1 (2m22s ago)   2m53s



 

minikube 部署awx

awx operator

vi kustomization.yaml

---

apiVersion: kustomize.config.k8s.io/v1beta1

kind: Kustomization

resources:

  # Find the latest tag here: https://github.com/ansible/awx-operator/releases

  - github.com/ansible/awx-operator/config/default?ref=2.8.0

  -

# Set the image tags to match the git version from above

images:

  - name: quay.io/ansible/awx-operator

    newTag: 2.8.0

# Specify a custom namespace in which to install AWX

namespace: awx

---

第一次应用kustomization.yaml

kubectl apply -k .

kubectl -n awx get pod

awx-operator-controller-manager-xxx

镜像失败的话,edit这个deployment

我这里是gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0 pull不到

kubectl -n awx edit deployment.apps/awx-operator-controller-manager

#gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0更改成kubebuilder/kube-rbac-proxy:v0.15.0,去掉gcr.io/即可

全都成功以后,awx的operator pod都是running

awx-demo

vi awx-demo.yaml

---

apiVersion: awx.ansible.com/v1beta1

kind: AWX

metadata:

  name: awx-demo

spec:

  service_type: nodeport

---

第二次应用kustomization.yaml

# 再次vi kustomization.yaml,把github.com/ansible/awx-operator/config/default?ref=2.8.0去掉,更换成awx-demo.yaml

# 如果保留github.com/ansible/awx-operator/config/default?ref=2.8.0,deployment镜像问题需要再次更改。

kubectl apply -k .

# 成功了以后,由于minikube的pod是docker镜像内部,这里使用nginx进行转发

# 先取得nodeport service的Port是多少

root@k8su0:~# kubectl get service -n awx -o wide

NAME                                              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE     SELECTOR

awx-demo-postgres-13                              ClusterIP   None            <none>        5432/TCP       5m5s    app.kubernetes.io/component=database,app.kubernetes.io/instance=postgres-13-awx-demo,app.kubernetes.io/managed-by=awx-operator,app.kubernetes.io/name=postgres-13,app.kubernetes.io/part-of=awx-demo

awx-demo-service                                  NodePort    10.98.117.116   <none>        80:31606/TCP   3m33s   app.kubernetes.io/component=awx,app.kubernetes.io/managed-by=awx-operator,app.kubernetes.io/name=awx-demo-web

awx-operator-controller-manager-metrics-service   ClusterIP   10.101.184.90   <none>        8443/TCP       10m     control-plane=controller-manager

root@k8su0:~#

# 再取得minikube的内部nodeip

root@k8su0:~# kubectl get node -o wide

NAME       STATUS   ROLES           AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME

minikube   Ready    control-plane   15m   v1.28.3   192.168.49.2   <none>        Ubuntu 22.04.3 LTS   5.15.0-89-generic   docker://24.0.7

root@k8su0:~# minikube ip

192.168.49.2

# 使用这两个编辑nginx.conf

sudo cp /home/setup/nginx.conf /etc/nginx/nginx.conf

sudo systemctl daemon-reload

sudo systemctl restart nginx

# 取得admin密码

kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" -n awx | base64 --decode ; echo

# 访问主机地址,11.0.1.130:31606 admin + password

附录:

nginx.conf

#load_module /usr/lib64/nginx/modules/ngx_stream_module.so;

user nginx;

worker_processes auto;

error_log /var/log/nginx/error.log;

pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {

    worker_connections 1024;

}


 

stream {

    log_format  main  '$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent';

    access_log  /var/log/nginx/k8s-access.log  main;

    upstream minikube-awx {

       # ip_hash;

       server 192.168.49.2:31606 weight=10; # minikube ip + aws demo service nodeport's port

    }

   

    server {

       listen 31606;  # aws demo service 保持一直,这里主机也监听service nodeport's port

       proxy_pass minikube-awx;

    }

}

http {

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;

    tcp_nopush          on;

    tcp_nodelay         on;

    keepalive_timeout   65;

    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;

    default_type        application/octet-stream;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Ubuntu 20.04上安装AWX,您可以按照以下步骤进行操作: 1. 更新软件包: 使用以下命令更新系统软件包: ``` sudo apt update sudo apt upgrade ``` 2. 安装Docker和Docker Compose: 使用以下命令安装Docker和Docker Compose: ``` sudo apt install docker.io sudo systemctl start docker sudo systemctl enable docker ``` 然后,您可以使用以下命令安装Docker Compose: ``` sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` 3. 克隆AWX存储库: 使用以下命令将AWX存储库克隆到您的系统中: ``` git clone https://github.com/ansible/awx.git cd awx ``` 4. 配置AWX: 在AWX存储库中,使用以下命令将AWX配置文件从示例文件创建为实际文件: ``` cp installer/inventory文件.example installer/inventory ``` 5. 编辑配置文件: 使用您喜欢的文本编辑器(如nano或vim)编辑AWX配置文件: ``` nano installer/inventory ``` 根据您的需求修改配置文件中的参数,比如数据库设置、管理员用户名和密码等。 6. 启动AWX: 使用以下命令启动AWX安装: ``` sudo ./installer/ansible.sh -i installer/inventory install ``` 安装过程可能需要一些时间,请耐心等待直到完成。 7. 访问AWX: 安装完成后,您可以在Web浏览器中访问AWX控制台。默认情况下,AWX将在 http://localhost/ 上监听。您可以使用配置文件中指定的管理员用户名和密码进行登录。 请注意,以上步骤仅提供了一个基本的安装AWX的指南。根据您的特定环境和需求,可能需要进行其他配置和调整。建议查阅官方文档或参考其他资源以获取更多详细信息和指导。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Ansible AWX安装教程](https://blog.csdn.net/Accept1234/article/details/122825291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [PiKubed-Project:用于创建和维护 K3S Raspberry Pi 集群的 Ansible playbooksroles 集合](https://download.csdn.net/download/weixin_42144604/19183513)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值