文章目錄
基礎環境
- 系統要求
- intel 處理器 不低於8G內存 4核CPU
- centos7.4 64位 最好Minimal安裝
- 軟件要求
- intel 處理器 不低於8G內存 4核CPU
- centos7.4 64位 最好Minimal安裝
- 操作系統設置
- systemctl stop firewalld
- systemctl disable firewalld
- iptables -F && iptables -Z && iptables -X
- setenforce 0
- swapoff -a
- 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安裝之後裝的話需要執行下面操作
- 啓動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
- 重載系統配置並啓動docker
systemctl daemon-reload
systemctl restart docker
- 如果已經安裝了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-svc.yaml
clusterIP: 10.244.2.2
- 測試dns
-
安裝 busybox.yaml
-
進入busbox 容器
kubectl exec -i -t busybox sh
- 使用 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
-
訪問
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