k3s 基於docker容器 使用

2021-09-25 13:33:21 字數 3971 閱讀 6906

前言:公司打算對外銷售專案,因為是微服務,不使用容器部署複雜,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

報錯

kubectl get pod --all-namespaces發現pod一直處於containercreating狀態

kubectl describe pod pod名字 -n 命名空間

三,新增node節點

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...