溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

k8s的安裝與簡(jiǎn)單使用

發(fā)布時(shí)間:2021-07-20 17:48:22 來源:億速云 閱讀:363 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要介紹“k8s的安裝與簡(jiǎn)單使用”,在日常操作中,相信很多人在k8s的安裝與簡(jiǎn)單使用問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”k8s的安裝與簡(jiǎn)單使用”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

1. 內(nèi)容編排與kubernetes介紹

  • 支持集群環(huán)境內(nèi)容編排的工具kubernetes 簡(jiǎn)稱k8s.

  • k8s是谷歌官方提供的,底層基于docker,與docker-swarm是競(jìng)爭(zhēng)關(guān)系。

  • 集群容器管理領(lǐng)域幾乎都是采用的k8s。

k8s的職責(zé)

  • 自動(dòng)化容器的部署和復(fù)制

  • 隨時(shí)擴(kuò)展或收縮容器規(guī)模

  • 容器分組Group,并且提供容器間的負(fù)載均衡

  • 實(shí)時(shí)監(jiān)控,即時(shí)故障發(fā)現(xiàn),自動(dòng)替換

2.k8s基本概念

k8s的安裝與簡(jiǎn)單使用

  • k8s Master 主節(jié)點(diǎn)

  • Node 節(jié)點(diǎn)

  • Service 服務(wù)

  • Replication Controller 復(fù)制控制器

  • Label 標(biāo)簽

  • Container 容器

  • Pod k8s最小控制單元

Master

Master是集群的網(wǎng)關(guān)和中樞樞紐,主要作用:暴露API接口,跟蹤其他服務(wù)器的健康狀態(tài)、以最優(yōu)方式調(diào)度負(fù)載,以及編排其他組件之間的通信。單個(gè)的Master節(jié)點(diǎn)可以完成所有的功能,但是考慮單點(diǎn)故障的痛點(diǎn),生產(chǎn)環(huán)境中通常要部署多個(gè)Master節(jié)點(diǎn),組成Cluster.

Node

Node是k8s的工作節(jié)點(diǎn),負(fù)責(zé)接收來自Master的工作指令,并根據(jù)指令相應(yīng)地創(chuàng)建和銷毀Pod對(duì)象,以及調(diào)整網(wǎng)絡(luò)規(guī)則進(jìn)行合理路由和流量轉(zhuǎn)發(fā)。生產(chǎn)環(huán)境中,Node節(jié)點(diǎn)可以有N個(gè)。

Pod

  • pod是容器的容器,可以包含多個(gè)Container

  • 是k8s最小的可部署的單元,一個(gè)Pod就是一個(gè)進(jìn)程

  • pod內(nèi)部容器的網(wǎng)絡(luò)互通,每個(gè)pod都有獨(dú)立的虛擬ip

  • pod都是部署完整的應(yīng)用或者模塊

k8s的安裝與簡(jiǎn)單使用

kubelet kube-proxy docker

3. k8s安裝

國(guó)內(nèi)安裝k8s途徑

  • 使用kubeadmin離線安裝

  • 使用阿里公有云平臺(tái)k8s

  • 通過yum官方倉(cāng)庫(kù)

  • 二進(jìn)制包形式安裝,kubeasz

3.1 安裝kubeadmin加載k8s鏡像
# 以下命令在三臺(tái)虛擬機(jī)執(zhí)行 yz10  yz20  yz21
mkdir /usr/local/k8s-install
cd /usr/local/k8s-install

4. k8s離線部署

10.211.55.10  yz10   Master節(jié)點(diǎn)
10.211.55.20  yz20   Node節(jié)點(diǎn)
10.211.55.21  yz21   Node節(jié)點(diǎn)
# 1. 調(diào)整時(shí)區(qū)
timedatectl set-timezone Asia/Shanghai
# 2. 關(guān)閉selinux和防火墻
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl disable firewalld
systemctl stop firewalld
# 3. k8sadmin鏡像下載附帶對(duì)應(yīng)的docker
# 4. 鏡像上傳到每個(gè)節(jié)點(diǎn)
mkdir -p /usr/local/k8s-install
scp -r kubernetes-1.14 root@yz10:/usr/local/k8s-install

# 5. 安裝docker,記得配置加速器
tar -xf docker-ce-18.09.tar.gz
cd docker 
yum localinstall -y *.rpm

# 6. 確認(rèn)cgroup為 cgroupfs
docker info|grep cgroup
# 7. 安裝kubeadm
tar -xf kube114-rpm.tar.gz
cd kube114-rpm
yum localinstall -y *.rpm

# 8. 關(guān)閉交換區(qū)
swapoff -a  #關(guān)閉
vi /etc/fstab
# 注釋這行 永久關(guān)閉
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

# 9. 配置網(wǎng)橋
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

# 10. 通過鏡像安裝k8s
docker load -i k8s-114-images.tar.gz
docker load -i flannel-dashboard.tar.gz

5. 構(gòu)建k8s集群

確保上述節(jié)點(diǎn)都已經(jīng)安裝好了k8s。

# master主服務(wù)器網(wǎng)絡(luò)設(shè)置
kubeadm init --kubernetes-version v1.14.1 --pod-network-cidr 10.244.0.0/16

# 運(yùn)行完畢后查看需要手動(dòng)運(yùn)行的命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
# 查看節(jié)點(diǎn), 可以看到只有一個(gè)master節(jié)點(diǎn)
kubectl get nodes
NAME   STATUS     ROLES    AGE     VERSION
yz10   NotReady   master   5m21s   v1.14.1

# 查看存在問題的pod
kubectl get pod --all-namespaces

k8s的安裝與簡(jiǎn)單使用

# pending 是需要安裝flannel網(wǎng)絡(luò)組件
kubectl create -f /usr/local/k8s-install/kubernetes-1.14/kube-flannel.yml

# 再次查看,已經(jīng)處于running狀態(tài)
kubectl get pod --all-namespaces

# 查看master的token 
kubeadm token list

# 其余節(jié)點(diǎn)加入master節(jié)點(diǎn)集群
kubeadm join 10.211.55.10:6443 --token 63zvtd.rej4gqrhselysqsb --discovery-token-unsafe-skip-ca-verification

master節(jié)點(diǎn)運(yùn)行: kubectl get nodes

k8s的安裝與簡(jiǎn)單使用

可以看到,集群已經(jīng)部署完畢。

6. k8s設(shè)置重啟服務(wù)

  • kubeadm 是k8s集群快速構(gòu)建工具

  • kubelet 運(yùn)行在所有節(jié)點(diǎn)上,負(fù)責(zé)啟動(dòng)pod和容器,以系統(tǒng)服務(wù)的形式出現(xiàn)

  • kubectl 是k8s命令行工具,提供指令

systemctl start kubelet

設(shè)置開機(jī)啟動(dòng) systemctl enable kubelet

7.開啟WebUI Dashboard

# master開啟儀表盤
kubectl apply -f kubernetes-dashboard.yaml
kubectl apply -f admin-role.yaml
kubectl apply -f kubernetes-dashboard-admin.rbac.yaml

kubectl -n kube-system get svc

# 查看pod情況,dashbord running正常
kubectl get pods --all-namespaces

# 遇到問題可以刪除pod,重新配置
kubectl -n kube-system delete pod/{podName}

訪問 http://宿主機(jī)ip:32000/ 即可進(jìn)入dashbord

8.dashbord 部署tomcat集群

工作負(fù)載 -》 創(chuàng)建 即可

9.deployment腳本部署tomcat集群

  • 部署是指k8s向node節(jié)點(diǎn)發(fā)送指令創(chuàng)建容器的過程

  • k8s支持yml格式的部署腳本

  • kubectl create -f 部署文件.yml

編寫第一個(gè)k8s部署腳本文件:

apiVersion: extensions/v1beta1
kind: Deployment
metadata: 
  name: tomcat-deploy
spec: 
  replicas: 2
  template: 
    metadata:
      labels:
        app: tomcat-cluster
    spec: 
      containers: 
      - name: tomcat-cluster
        image: tomcat
        ports: 
        - containerPort: 8080

與部署相關(guān)的常用命令:

  • kubectl create -f 部署文件.yml -》 創(chuàng)建部署

  • kubectl apply -f 部署文件.yml -》 更新部署配置

  • kubectl get pod [-o wide] -》 查看已部署pod

  • kubectl describe pod pod名稱 -》 查看pod詳細(xì)信息

  • kubectl logs [-f] pod名稱 -》 查看pod輸出日志

# 創(chuàng)建tomcat容器
kubectl create -f tomcat-deploy.yml

# 查看部署
kubectl get deployment

10. 外部訪問tomcat集群

service 服務(wù)用于對(duì)外暴露應(yīng)用。

k8s的安裝與簡(jiǎn)單使用

編寫服務(wù) tomcat-service.yml

apiVersion: v1
kind: Service
metadata: 
  name: tomcat-service
  labels: 
    app: tomcat-service
spec:
  type: NodePort
  selector: 
    app: tomcat-cluster
  ports: 
  - port: 18010
    targetPort: 8080
    nodePort: 32500
# 創(chuàng)建負(fù)載均衡服務(wù)
kubectl create -f tomcat-service.yml

# 查看服務(wù)
kubectl get service

11. 基于NFS實(shí)現(xiàn)集群文件共享

  • nfs主要是采用遠(yuǎn)程過程調(diào)用RPC機(jī)制實(shí)現(xiàn)文件傳輸

  • yum install -y nfs-utils rpcbind

k8s的安裝與簡(jiǎn)單使用

# 編輯nfs共享文件設(shè)置
vi /etc/exports

/usr/local/data/www-data  10.211.55.10/24(rw,sync)
systemctl start nfs.service
systemctl start rpcbind.service

systemctl enable nfs.service
systemctl enable rpcbind.service

# exportfs查看
exportfs
/usr/local/data/www-data
		10.211.55.10/24  # 說明配置生效
		
# 節(jié)點(diǎn)安裝工具
yum install -y nfs-utils

# 節(jié)點(diǎn)安裝完畢后
showmount -e yz10
 
# 掛載文件
mkdir -p /mnt/www-data
mount yz10:/usr/local/data/www-data /mnt/www-data

12. 部署配置掛載點(diǎn)

# 查看deployment
kubectl get deployment

# 刪除部署,服務(wù)service
kubectl delete deployment tomcat-deploy
kubectl delete service tomcat-service

# 重新部署掛載
vi tomcat-deploy.yml # 修改部署文件
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tomcat-deploy
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: tomcat-cluster
    spec:
      volumes: 
      - name: webapp
        hostPath: 
          path: /mnt/www-data
      containers:
      - name: tomcat-cluster
        image: tomcat
        ports:
        - containerPort: 8080
        volumeMounts: 
        - name: webapp
          mountPath: /usr/local/tomcat/webapps
# 進(jìn)入pod查看掛載是否成功
kubectl exec -it tomcat-deploy-6dcc5c59c-hg5z7 bash

13. 利用 Rinetd 對(duì)外提供Service以及負(fù)載均衡支持

vi tomcat-service.yml 修改服務(wù)文件

apiVersion: v1
kind: Service
metadata:
  name: tomcat-service
  labels:
    app: tomcat-service
spec:
#  type: NodePort
  selector:
    app: tomcat-cluster
  ports:
  - port: 18010
    targetPort: 8080
#    nodePort: 32500
# 創(chuàng)建服務(wù)
kubectl create -f tomcat-service.yml
# 在www-data 創(chuàng)建一個(gè)test目錄創(chuàng)建文件
vi index.jsp
<%=request.getLocalAddr()%>

# 訪問
curl http://10.97.80.216:18010/test/index.jsp

k8s的安裝與簡(jiǎn)單使用

k8s的安裝與簡(jiǎn)單使用

可以觀察到隨機(jī)負(fù)載均衡的效果。

端口轉(zhuǎn)發(fā)工具 Rinetd

  • Rinetd 是Linux操作系統(tǒng)中為重定向傳輸控制協(xié)議工具

  • 可以將源ip端口數(shù)據(jù)轉(zhuǎn)發(fā)到目標(biāo)ip端口

  • 在k8s中用于將service服務(wù)對(duì)外暴露

# 宿主機(jī)安裝Rinted
cd /usr/local
http://www.rinetd.com/download/rinetd.tar.gz
cd rinetd
sed -i 's/65536/65535/g' rinetd.c
mkdir -p /usr/man/
yum install -y gcc
make && make install

# 編寫端口映射配置
vi /etc/rinetd.conf
0.0.0.0 18010 10.97.80.216 18010

# 加載配置
rinetd -c /etc/rinetd.conf

# 測(cè)試外部訪問,已經(jīng)可以通了
http://yz10:18010/test/

14. 更新集群配置與資源限定

k8s部署調(diào)整命令

  • 更新集群配置: kubectl apply -f yml文件

  • 刪除部署|服務(wù)|pod

  • kubectl delete deployment | service | pod 名稱

資源限定

containers: 
- name: tomcat-cluster
  image: tomcat
  resources: 
    requests:  # 需要的資源
      cpu: 1
      memory: 500Mi
    limits:    # 限制的資源
      cpu: 2   # cpu不一定是整數(shù)
      memory: 1024Mi

到此,關(guān)于“k8s的安裝與簡(jiǎn)單使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

k8s
AI