kubernets -安裝

基礎環境

  • 系統要求
  1. intel 處理器 不低於8G內存 4核CPU
  2. centos7.4 64位 最好Minimal安裝
  • 軟件要求
  1. intel 處理器 不低於8G內存 4核CPU
  2. centos7.4 64位 最好Minimal安裝
  • 操作系統設置
  1. systemctl stop firewalld
  2. systemctl disable firewalld
  3. iptables -F && iptables -Z && iptables -X
  4. setenforce 0
  5. swapoff -a
  6. vi /etc/hosts
根據下面k8s 準備機器設置

192.168.1.32 master
192.168.1.32 etcd
192.168.1.33 node1
192.168.1.34 node2

docker 私有庫安裝

  • docker安裝

yum install docker -y

  • 設置docker環境變量(鏡像加速)

vi /etc/docker/deamon.json

{
 "registry-mirrors": ["https://registry.docker-cn.com","http://f2d6cb40.m.daocloud.io"],
 "insecure-registries": ["192.168.1.32:5000"]
}
  • 啓動docker

sytstemctl start docer

  • 創建是私有庫

docker run -d -p 5000:5000 --privileged=true -v /data/history:/data/registry registry --restart=always

  • 推送

docker tag xxxx:1.0 192.168.1.32:5000/efei/xxxx:1.0
docker push 192.168.1.32:5000/efei/xxxx:1.0

Kubernets 安裝

  • 服務器準備
IP 用途
192.168.1.32 master
192.168.1.33 node
192.168.1.34 node
  • 軟件安裝清單
IP 用途
192.168.1.32 kube-apiserver, kubecontroller-manager,kube-scheduler,flannel,kube-dns,docker,etcd
192.168.1.33 kubelet, proxy,docker,flannel
192.168.1.34 kubelet, proxy,docker,flannel
  • 設置阿里雲源

官網地址 : https://opsx.alibaba.com/

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

  • 設置阿里kubernets源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
  • 生效yum設置

yum clean
yum makecache


  • 安裝etcd

yum install etcd -y

  • 配置etcd
vi /etc/etcd/etcd.conf
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.32:2379"

  • 啓動etcd

systemctl start etcd

  • 檢查etcd

ss -anl|grep 2379
etcdctl cluster-health


k8s-Flannel 網絡安裝

  • 設置網絡地址分配範圍

etcdctl set /k8s/network/config ‘{ “Network”: “172.16.0.0/16” }’

  • 安裝Flannel

yum install flannel -y

注:master、node機器都要安裝

  • 配置config

vi /etc/sysconfig/flanneld

FLANNEL_ETCD_ENDPOINTS="http://master:2379"
FLANNEL_ETCD_PREFIX="/k8s/network"
  • 啓動

systemctl start flanneld

  • 注意事項

如果flannel在docker安裝之後裝的話需要執行下面操作

  1. 啓動flannel之前最好清空iptables,關閉 docker服務 及docker0網卡

iptables -X && iptables -F %% iptables -z
ip link delete docker0
rm -f /run/flannel/docker
rm -f /run/flannel/subnet.env

  1. 重載系統配置並啓動docker

systemctl daemon-reload
systemctl restart docker

  1. 如果已經安裝了k8s話 還要重啓k8s(含master、node)

<重啓請查看命令集>


  • 安裝master

yum install kubernetes-master -y
注:這個命令會安裝 kubecontroller-manager,kube-scheduler 三個程序

  • 配置apiserver

vi /etc/kubernets/apiserver

KUBE_ETCD_SERVERS="--etcd-servers=http://etcd:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.244.0.0/16 --service-node-port-range=3000-65535"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"
  • 配置config

vi /etc/kubernets/config

KUBE_MASTER="--master=http://master:8080"
  • 啓動master

systemctl start kube-apiserver
systemctl start kube-scheduler
systemctl start kube-controller-manager


  • 安裝node

yum install kubernetes-node -y
這個命令會安裝 kubelet, proxy,docker 三個程序

  • 配置config

vi /etc/kubernets/config

KUBE_MASTER="--master=http://master:8080"
  • 配置kuber

vi /etc/kubernets/kuber

KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=node2"
KUBELET_API_SERVER="--api-servers=http://master:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=192.168.1.32:5000/rhel7/pod-infrastructure:latest"
KUBELET_ARGS="--cluster-dns=172.16.1.3 --cluster-domain=cluster.local."

注意:鏡像要提前下載並推送到私有庫中, dns可以安裝dns再配置
  • 啓動node

systemctl start kubelet
systemctl start kube-proxy


k8s-dns 安裝

爲了容器內部能通過service訪問,才需要安裝dns,
否則非必須安裝

  • 安裝 kube-dns-rc.yaml

配置文件需要修改注意地方

- --domain=cluster.local. 
- --kube-master-url = http://192.168.1.32:8080
- --cmd=nslookup kubernetes.default.svc.cluster.local. 127.0.0.1 >/dev/null
- --cmd=nslookup kubernetes.default.svc.cluster.local. 127.0.0.1:10053 >/dev/null

主要設置domain、master-url,目前不清楚doamain要不要加'.' , 我的猜想應該只要名字一致即可.

參考文件:kube-dns-rc.yaml

  • 安裝 kube-dns-svc.yaml
clusterIP: 10.244.2.2

參考文件:kube-dns-svc.yaml

  • 測試dns
  1. 安裝 busybox.yaml

  2. 進入busbox 容器

kubectl exec -i -t busybox sh

  1. 使用 nslookup 測試

nslookup kubernetes

也可以直接: kubectl exec busybox nslookup kubernetes-dashboard


k8s-UI 安裝

  • 安裝 kubernetes-dashboard.yaml

配置文件需要修改注意地方

-  --apiserver-host=http://192.168.1.32:8080
  • 安裝 kubernetes-dashboardsvc.yaml

  • 訪問

http://nodeip:port/
http://master:8080/ui/


k8s 應用發佈

以發佈tomcat 測試

  • 安裝 my-web-rc.yaml

  • 安裝 my-web-svc.yaml

  • 訪問

http://nodeip:port/


常用命令集

服務 啓動/停止/重啓

start 啓動 stop 停止 restart 重啓

  • etcd

systemctl start etcd

  • master

systemctl start kube-apiserver.service
systemctl start kube-controller-manager.service
systemctl start kube-scheduler.service

  • node

systemctl start kubelet.service
systemctl start kubelet-proxy.service

  • flanneld

systemctl restart flanneld

  • 重載系統配置

systemctl daemon-reload
systemctl restart docker


  • 創建

kubectl create -f *.yaml
kubectl apply -f *.yaml


  • 查看

kubectl get namespances
kubectl get deployment --all-namespaces
kubectl get pods --all-namespaces
kubectl get svc --all-namespaces
kubectl get pod -o wide --all-namespaces
kubectl get pod --namespace=“kuber-system” #指定表空間查詢

kubectl describe pod --namespace=“kube-system”
kubectl describe svc --namespace=“kube-system”
kubectl -c <容器名>

kubectl logs -f -n kube-system


  • 刪除

kubectl delete -f *.yaml
kubectl delete svc --namespace=kube-system
kubectl delete pods --grace-period=0 --force
kubectl delete --all pods --namespace=kube-system


  • cmd

kubectl exec busybox nslookup kubernetes-dashboard
kubectl exec busybox nslookup mytomcat
kubectl exec -i -t busybox /bin/bash


  • docker 鏡像操作

docker tag
docker push
docker pull <地址>
docker serach
docker run [查看網上文檔]


  • etcd

etcdctl set
etcdctl mk
etcdctl update
etcdctl rm
etcdctl rmdir


etcdctl get /k8s/network/config
etcdctl ls


  • 輔助命令

ip link delete docker0

alias kube=‘kubectl’
alias kubegp=‘kubectl get pods’
alias kubegc=‘kubectl get svc’


附鏡像地址

可以到阿里雲鏡像庫搜索

docker pull registry.cn-shanghai.aliyuncs.com/hyzhou/busybox
docker pull registry.cn-hangzhou.aliyuncs.com/centos-jdk7-tomcat8/tomcat8:0.0.2

docker pull registry.cn-hangzhou.aliyuncs.com/kube_containers/kubedns-amd64:1.9
docker pull registry.cn-hangzhou.aliyuncs.com/kube_containers/kube-dnsmasq-amd64:1.4.1
docker pull registry.cn-hangzhou.aliyuncs.com/kube_containers/exechealthz-amd64:1.2

k8s master 高可用(稍後)

k8s etcd 集羣(稍後)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章