kubernetes 安裝

ough發表於2020-03-15

伺服器配置一些引數

關閉交換空間
swapoff -a
避免開機啟動交換空間
#註釋swap開頭的行
vi /etc/fstab
關閉防火牆
ufw disable
配置DNS
#取消DNS行註釋,並增加DNS配置:114.114.114.114,修改後重啟計算機(不一定是114DNS)
vi /etc/systemd/resolved.conf
安裝docker
curl -sSL https://get.docker.com/ | sh
#開機啟動
sudo systemctl enable docker.service
#國外安裝docker-compose
curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

#國內訪問安裝docker-compose
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose  
#執行docker
start|restart|stop   
sudo service docker start
#(全域性時鐘)
dpkg-reconfigure tzdata #Asia(亞洲) #Shanghai(上海)
#同步時間
yum install ntpdate
#設定系統時間與網路時間同步(cn.pool.ntp.org 位於中國的公共NTP伺服器)
ntpdate cn.pool.ntp.org
#將系統時間寫入到硬體時間
hwclock --systohc
#確認件時間
date
#修改cloud.cfg
主要作用是防止重啟後主機名還原
vi /etc/cloud/cloud.cfg
#改配置預設為:false,改為true
preserver_hostname: true

獨立節點配置
注意:為master和node節點單獨配置對應的IP和主機名
配置ip
編輯vi /etc/netplan/50-cloud-init.yaml

network
    ethernets:
        ens33:
            addresses: {192.168.1.12/24}
            gateway4: 192.168.81.2
            nameservers:
                addresses: [192.168.89.2]
    version: 2

使用netplan apply命令讓配置生效

配置主機名

#修改主機名
hostnamectl set-hostname kubernetes-master
#配置hosts 
cat >> /etc/hosts <<EOF
192.168.81.110 kubernetes-master
EOF

#安裝kubernetes叢集
kubeadm是kubernetes的叢集安裝工具,能夠快速安裝kubernetes叢集,安裝kubernetes主要安裝它的各種映象,而kubeadm已經為我們整合好了執行kubernetes所需要的的基本映象,由於國內的網路原因,在搭建環境時,無法拉取到這些映象,此時我們只需要修改阿里雲提供的映象服務即可解決該問題。

安裝kubernetes必備工具

安裝三個kubernetes必備工具,分別為kubeadm(安裝k8s),kubelet(k8s通訊),kubectl(操作k8s)
建立一個檔案!!!

#安裝系統工具
yum install -y apt-transport-https
#安裝GPG證照
curl https://mirrors.aliyum.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
#寫入軟體源,注意:我們用系統代號為bionic, 但目前阿里雲不支援,所以沿用16.04的xenial
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/kubernetes-xenial main
EOF
## 安裝
yum install -y  kubelet kubeadm kubectl

#建立並修改配置檔案(匯出叢集配置)

kubeadm config print init-defaults --kubeconfig ClusterConfiguration > kubeadm.yml
修改配置檔案kubeadm.yml
advertiseAddress: kubernetes-master的ip地址
imageRepository: registry.aliyuncs.com/google_containers
kubernetesVersion: 當前k8s版本號(一定要準確)
在networking下加上
podSubnet: "10.244.0.0/16"

檢視所需要映象

kubeadm config images list --config kubeadm.yml

拉取所需要的的映象

kubeadm config images pull --config kubeadm.yml

初始化

kubeadm init --config=kubeadm.yml --upload-certs | tee kubeadm-init.log

伺服器會顯示類似的圖片命令按照敲

CNI是一個標準的通用的介面,在容器平臺,Docker,Kubernetes,Mesos 容器網路解決方案(flannel,calico,weave)。只要提供一個標準的介面,就能同樣滿足該協議的所有容器平臺提供網路功能

Kubernetes中可選的CNI外掛如下
*Flannel
*Calico
*Canal
*Weave

什麼是Calico

Calico為容器和虛擬機器提供了安全的網路連線解決方案,可與Kubernetes, OpenShift, Docker, Mesos, DC/OS和OpenStack整合
Calico還提供網路安全規則的動態實施,使用Calico的簡單策略語言,你可以實現對容器,虛擬化工作負載和邏輯主機端點之間的通訊的細顆粒控制

安裝網路外掛Calico(3.12)

https://docs.projectcalico.org/releases
建立一個檔案!!!

wget https://docs.projectcalico.org/manifests/calico.yaml
#修改配置可通過如下命令快速查詢
* 顯示行號 :ser number
* 查詢字元 :要查詢的字元,輸入小寫n下一個選項,輸入大寫N上一個匹配項
vi calico.yaml
-name CALICO_IPV4POOL_CIDR
 value "192.168.0.0/16"
修改為:kubeadm.yml裡面的podSubnet一樣
value "10.244.0.0/16"
當前檔案執行:kubectl apply -f calico.yaml
檢查:watch kubectl get pods -A
#狀態檢視
執行 kubectl get nodes 

kube容器解釋

#容器排程統一入口
kube-proxy
#
kube-controller-master
#API閘道器
kube-apiserver
#排程器(類似於nginx的代理)
kube-scheduler
#網路管理
calico/node
calico/pod2daemon-flexvol
calico/cni
google_containers/coredns
註冊中心
google_containers/etcd
google_containers/pause
kubectl run nginx --image=nginx --replicas=2 --port=80
#檢視容器組
watch kubectl get pods
#檢視容器組的詳細
kubectl get podds -owide
#檢視已部署的服務
kubectl get deployment
#暴露容器
kubectl expose deployment nginx --port=80 --type=LoadBalancer
kubectl get svc

kubernetes 物件
POD容器組
Deployment 管理POD
Service 暴露K8S內部服務(Deployment)

常用命令

kubeadm get nodes 檢視節點狀態
kubectl get pods 檢視所有容器
kubectl get deployment 檢視物件
kubectl get service 檢視服務
kubectl apply 執行一個資源配置
kubectl describe 檢視物件的詳細情況
kubectl 相當於是docker
列: kubectl exec -it nginx /bin/bash
本作品採用《CC 協議》,轉載必須註明作者和本文連結

ckall

相關文章