前言:公司打算對外銷售專案,因為是微服務,不使用容器部署複雜,k8s太佔資源,個人覺得swarm有些功能沒k8s好用,最後決定使用k3s.我已經用ansible寫好ansible-playbook了,這裡主要講這個檔案來讓大家了解部署k3s,雖然k3s部署已經夠簡單了,但是多台機器每次都得手動輸入很麻煩,所以使用ansible部署所有操作都在主節點:
集群架構
master:192.168.1.191 node:192.168.1.12 192.168.1.231
master目錄結構:
[root@c8o k3s]# pwd
/opt/k3s
├── install
│ ├── 1_master.sh #安裝準備指令碼
│ └── 2_k3s.yml #部署k3s指令碼
└── str
├── ansible
│ └── hosts #ansible hosts檔案
├── k3s #k3s二進位制檔案
├── k3s.sh #k3s安裝指令碼
├── node.sh #node節點執行k3s指令碼requirements.txt
├── requirements.txt #pip安裝ansible
└── pause.tar #pause:3.1 沒這個會一直停在拉取映象階段,下面會有錯誤截圖
hosts檔案,因為我的節點有點少,並且密碼不一樣,就這樣寫了,後續新增有點麻煩,可以新增個組變數,但是需要使用者名稱密碼一樣
1_master.s**件講解
#!/bin/bash
ssh-keygen -t rsa -n '' -f /root/.ssh/id_rsa -q #生成秘鑰
yum -y install epel-release #配置yum倉庫
yum update -y #更新系統
yum -y install python-pip sshpass #sshpass用來ansible傳輸秘鑰
pip install -r /opt/k3s/str/requirements.txt #安裝ansible,不用yum裝是因為總是404不是很穩定
cp -r /opt/k3s/str/ansible /etc #拷貝ansible的hosts檔案
2_k3s.yml檔案講解
- hosts: master,node
tasks:
- name: "拷貝秘鑰"
authorized_key:
user: root
key: "}" #這個主要用來拷貝秘鑰,防止以後修改密碼後連線不到
- name: "新增hosts"
shell: echo $(hostname -i | awk '') $(hostname) >> /etc/hosts #新增hosts,沒這步k3s在啟動的時候會報找不到主機名的錯誤
- name: "關閉selinux"
shell: sed -i "s/selinux=enforcing/selinux=disabled/g" /etc/sysconfig/selinux
- name: "拷貝k3s執行檔案"
copy:
src=/opt/k3s/str/k3s
dest=/usr/local/bin/k3s
- name: "新增執行許可權"
shell: chmod +x /usr/local/bin/k3s
- name: "關閉防火牆"
service: name=firewalld enabled=no daemon_reload=no state=stopped
- name: "yum安裝環境"
- name: "使用阿里源"
shell: yum-config-manager --add-repo
- name: "yum安裝docker"
yum: name=docker-ce state=installed
- name: "啟動docker"
service: name=docker enabled=yes daemon_reload=yes state=restarted
- hosts: master
tasks:
- name: "載入pause映象"
shell: docker load -i /opt/k3s/str/pause.tar
- name: "啟動k3s"
shell: cat /opt/k3s/str/k3s.sh |install_k3s_exec="--docker --no-deploy traefik" sh - #--docker 表示使用docker作為預設容器, --no-deploy traefik表示不安裝traefik
- name: "修改配置檔案"
shell: sed -i "s/主節點ip/$(hostname -i | awk '')/g" /opt/k3s/str/node.sh
- name: "修改主節點key"
shell: sed -i "s/k3s_token/$(cat /var/lib/rancher/k3s/server/node-token)/g" /opt/k3s/str/node.sh
- hosts: node
tasks:
- name: "建立k3s目錄"
shell: mkdir /opt/k3s
- name: "拷貝檔案"
copy:
src=/opt/k3s/str/pause.tar
dest=/opt/k3s/pause.tar
- name: "拷貝k3s執行檔案"
copy:
src=/opt/k3s/str/k3s.sh
dest=/opt/k3s/k3s.sh
- name: "拷貝node檔案"
copy:
src=/opt/k3s/str/node.sh
dest=/opt/k3s/node.sh
- name: "載入pause映象"
shell: docker load -i /opt/k3s/pause.tar
- name: "node安裝k3s"
shell: chmod +x /opt/k3s/node.sh
shell: sh /opt/k3s/node.sh
報錯三,新增node節點kubectl get pod --all-namespaces發現pod一直處於containercreating狀態
kubectl describe pod pod名字 -n 命名空間
1,修改hosts,在[add_node]後面新增ip
2,安裝k3s
ansible add_node -m ping
ansible-playbook /opt/k3s/33_node.yml
檢視,新增成功
一句命令安裝k3s 使用docker
前提 已經安裝 docker curl fssl bash s docker mirror aliyuncurl sfl install k3s mirror cn install k3s exec docker no deploy traefik flannel backend none sh k...
基於centos7 6離線部署開k3s
releases 版本及images 參考 docker load i k3s airgap images amd64.tar loaded image docker.io coredns coredns 1.3.0 loaded image docker.io library traefik 1....
k3s使用示例 安裝 部署demo應用
參考鏈結 安裝命令 curl fssl bash s docker mirror aliyun 阿里雲映象加速 登入阿里雲,選擇 容器映象服務 映象中心 映象加速器 安裝 curl sfl sh 配置kubectl授權檔案 cd mkdir kube cp etc rancher k3s k3s.y...