ubuntu16.04 docker kubernetes(k8s) istio 安裝


該文章已更新,更新時間:2020-9-22 14:11:18

ubuntu16.04

docker 19.03.12

k8s 1.18.0

istio 1.5.0

准備工作:

關閉交換空間,虛擬化技術必須關閉交換空間
swapoff -a

查看交換空間

free -h

避免開機啟動交換空間,打開下面的文件,注釋掉swap那一行

vim /etc/fstab
關閉防火牆
ufw disable

修改主機名,修改文件中的名字,集群中不同端點的名稱不同

vim /etc/hostname

再把登記的主機名稱改過來,修改127.0.1.1后面那個名字

vim /etc/hosts

固定IP:

先修改vmware的配置:

vmware虛擬機-編輯-虛擬網絡編輯器

選擇vmnet8,nat模式,修改子網ip為192.168.8.0,按鈕全選

點擊nat設置,修改網關為192.168.8.2

虛擬機網絡適配器選擇使用nat模式

vim /etc/network/interfaces

在對應網卡下增加如下內容:

注意inet dhcp要改成static,dhcp表示動態,address改成自己的ip

重啟網絡
sudo /etc/init.d/networking restart

配置本地dns,增加nameserver 192.168.8.2

vim /etc/resolvconf/resolv.conf.d/base

重啟

ping一下試試

ping baidu.com

配置DNS,打開DNS注釋,值為114.114.114.114

vim /etc/systemd/resolved.conf

設置時區

dpkg-reconfigure tzdata

選擇Asia,ShangHai

時間同步
sudo apt-get install ntpdate

設置系統時間與網絡時間同步

ntpdate cn.pool.ntp.org

將系統時間寫入硬件時間

hwclock --systohc

配置完成后重啟。

docker安裝:

安裝必要的系統工具
sudo apt-get update sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

安裝GPG證書

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"

更新並安裝docker

sudo apt-get -y update sudo apt-get -y install docker-ce

配置鏡像加速,創建或修改/etc/docker/daemon.json文件,內容如下

{ "registry-mirrors": [ "https://registry.docker-cn.com" ] }

重啟服務

sudo systemctl daemon-reload sudo systemctl restart docker

檢查加速器是否生效

sudo docker info

有如下提示:表示鏡像加速成功

Registry Mirrors:
https://registry.docker-cn.com/

查看docker版本

docker version

k8s安裝

執行下面任務之前,先換下源,否則apt-get update命令非常慢。
vim /etc/apt/source.list 用下面內容替換下
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
安裝kube三大件
apt-get update && apt-get install -y apt-transport-https

安裝GPG證書

如果提示root權限,就切換到root用戶

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

添加源

sudo apt-add-repository "deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main"

安裝

apt-get update apt-get install -y kubelet=1.18.0-00 kubeadm=1.18.0-00 kubectl=1.18.0-00

安裝完重啟計算機

創建配置目錄

cd /usr/local/
mkdir k8s
cd k8s
mkdir config
cd config
kubeadm config print init-defaults --kubeconfig ClusterConfiguration > kubeadm.yml
vim kubeadm.yml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.8.130     # 修改IP(虛擬機靜態IP,前面設置的)
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  name: k8s-master
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers # 修改鏡像源
kind: ClusterConfiguration
kubernetesVersion: v1.18.6
networking:
  dnsDomain: cluster.local
  podSubnet: "10.244.0.0/16"       # 增加配置,用於節點間通信
  serviceSubnet: 10.96.0.0/12
scheduler: {}
查看鏡像

kubeadm config images list --config kubeadm.yml

拉取鏡像

kubeadm config images pull --config kubeadm.yml

如果pull失敗,就是網絡的問題了,另一個方案:從docker倉庫下載

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.0 k8s.gcr.io/kube-apiserver:v1.18.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0 k8s.gcr.io/kube-controller-manager:v1.18.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.0 k8s.gcr.io/kube-scheduler:v1.18.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7

docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.0
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.0
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7

查看鏡像

docker images

初始化

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

執行命令,已經提示你了

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
安裝calico,解決dns問題
kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml

在k8s/config目錄下,執行:

vim calico.yaml

以下內容復制進去:

apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
  name: default
spec:
  # Configures Calico networking.
  calicoNetwork:
    # Note: The ipPools section cannot be modified post-install.
    ipPools:
    - blockSize: 26
      cidr: 10.244.0.0/16
      encapsulation: VXLANCrossSubnet
      natOutgoing: Enabled
      nodeSelector: all()

執行命令:

kubectl create -f calico.yaml

觀察calico啟動,需要kexue上網,否則不能成功下載鏡像

watch kubectl get pods -n calico-system

等待所有pod均為running狀態

查看k8s相關pod運行情況

kubectl get pod -n kube-system

確保所有pod都是running

安裝Isito

之所以安裝1.5.0版本,是基於阿里的推薦,可參考git地址:
首先要取消k8s的權限限制,否則不能正常安裝istio
kubectl taint nodes --all node-role.kubernetes.io/master-

下載istio

curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.5.0 sh -

配置istioctl

cd istio-1.5.0
export PATH=$PWD/bin:$PATH

安裝istio

istioctl manifest apply --set profile=demo

確保所有istio有關pod都為running狀態

kubectl get pod -n istio-system

為default命名空間配置自動注入

kubectl label namespace default istio-injection=enabled
kubectl get namespace -L istio-injection

解決每次重啟都要配置istioctl命令:

使用root用戶,修改/root/.bashrc文件,增加如下內容:

export PATH="$PATH:/usr/local/istio/istio-1.5.0/bin

注意根據安裝路徑,修改一下,重啟。

至此,docker,k8s,istio安裝完成。

以上安裝過程如出現問題,請及時反饋,望能有所幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM