使用RKE搭建docker-k8s集群
目錄
一:什么是RKE
二:k8s主機master的準備工作
1、修改master主機名(先配置一臺,克隆另外兩臺)
2、配置靜態ip地址
3、修改域名解析地址
4、下載一些常用軟件并禁用防火墻、selinux、swap分區
5、刪除全部docker文件及依賴包、鏡像、容器、卷
6、安裝docker,有很多安裝方式,可以去官網看。不要下最新版,不兼容
7、修改docker配置
8、建一個用戶并添加權限。
9、啟動ipv4轉發
二:克隆兩臺機器,并修改IP地址和主機名
1、同master主機一樣修改IP地址和主機名
2、建立SSH免密通道
三:RKE安裝及部署k8s
1、安裝RKE
2、授權并創建cluster.yml
3、安裝(冪等操作)
4、master主機上安裝kubectl交互工具。
四:創建pod并開啟nginx服務(可以在root用戶)
1、創建兩個.yml文件
2、創建pod并查看狀態
3、啟動service暴露端口
4、瀏覽器驗證
五:補充
一:什么是RKE
????????RKE是一款經過CNCF認證的開源Kubernetes發行版,可以在Docker容器內運行。它通過刪除大部分主機依賴項,并為部署、升級和回滾提供一個穩定的路徑,從而解決了Kubernetes最常見的安裝復雜性問題。
二:k8s主機master的準備工作
| OS | hostname | IP |
| centos7 | k8s-master | 192.168.149.164 |
| centos7 | k8s-node1 | 192.168.149.165 |
| centos7 | k8s-node2 | 192.168.149.166 |
1、修改master主機名(先配置一臺,克隆另外兩臺)
vi /etc/hostname或者hostnamectl set-hostname k8s-master [root@k8s-master ~]# cat /etc/hostname k8s-master [root@k8s-master ~]#2、配置靜態ip地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33BOOTPROTO="static" DEVICE="ens33" ONBOOT="yes" IPADDR=192.168.149.164 PREFIX=24 GATEWAY=192.168.149.2 DNS1=114.114.114.114改完后service network restart重啟網絡服務
3、修改域名解析地址
cat >> /etc/hosts << EOF 192.168.149.164 k8s-master 192.168.149.165 k8s-node1 192.168.149.166 k8s-node2 EOF4、下載一些常用軟件并禁用防火墻、selinux、swap分區
yum install -y lrzsz yum install -y net-tools yum install -y wget yum install -y vim-enhanced yum install -y bash-completion yum install -y git yum install -y telnet yum install -y telnet-server ####全部建議永久關閉,避免重啟后服務報錯 # 關閉防火墻 systemctl stop firewalld systemctl disable firewalld# 關閉selinux sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久 setenforce 0 # 臨時# 關閉swap swapoff -a # 臨時 sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久5、刪除全部docker文件及依賴包、鏡像、容器、卷
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-enginerm –rf /var/lib/docker/6、安裝docker,有很多安裝方式,可以去官網看。不要下最新版,不兼容
官網提供多種方式安裝:Redirecting…
yum install docker -y [root@k8s-master ~]# docker -v Docker version 1.13.1, build 7d71120/1.13.17、修改docker配置
mkdir /etc/docker vi /etc/docker/daemon.json 添加: {"registry-mirrors": ["https://registry.docker-cn.com"],"dns":["114.114.114.114","8.8.8.8","8.8.4.4"] }然后使之生效:systemctl daemon-reload
設置開機自啟:systemctl enable docker
啟動:systemctl start docker
測試:docker run hello-world
顯示 Hello from Docker! 即表示安裝成功
8、建一個用戶并添加權限。
useradd xxx passwd xxx usermod -aG docker xxxvi /etc/sudoers 找到這一行:"root ALL=(ALL) ALL", 在下面添加"xxx ALL=(ALL) ALL"(這里的xxx是你的用戶名)9、啟動ipv4轉發
/etc/sysctl.confnet.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1使之生效sudo sysctl -p二:克隆兩臺機器,并修改IP地址和主機名
1、同master主機一樣修改IP地址和主機名
2、建立SSH免密通道
master主機這邊切換到普通用戶su - xxxssh-keygen #三次回車 生成秘鑰ssh-copy-id 用戶名@機器IP #輸入yes和密碼 發送公鑰,用戶名都是xxxssh 用戶名@機器IP #測試免密三:RKE安裝及部署k8s
1、安裝RKE
下載地址:Release Release v0.2.4 · rancher/rke · GitHub
使用xftp拖下來:
2、授權并創建cluster.yml
改名并賦予可執行權限 [yuan@k8s-master ~]$ ls cluster.rkestate cluster.yml kube_config_cluster.yml rke [yuan@k8s-master ~]$ chmod +x rke同目錄下創建cluster.yml文件 [yuan@k8s-master ~]$ cat cluster.yml nodes:- address: 192.168.149.164user: yuanrole: [controlplane,etcd]- address: 192.168.149.165user: yuanrole: [etcd,worker]- address: 192.168.149.166user: yuanrole: [etcd,worker] [yuan@k8s-master ~]$3、安裝(冪等操作)
./rke up --config cluster.yml如果報錯Failed to get job complete status for job rke-network-plugin-deploy-job in namespace kube-system,檢查ssh免密通道是否建好,重新執行一遍。
完成后當前目錄下回生成kube_config_cluster.yml和cluster.rkestate文件
4、master主機上安裝kubectl交互工具。
下載v1.15.0,或者官網Install Tools | Kubernetes
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl賦予可執行權限,放入bin目錄
chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl拷貝文件kube_config_cluster.yml并重命名
#將集群認證憑據文件添加到系統變量 echo export KUBECONFIG=/home/rke/kube_config_cluster.yml >> ~/.bash_profilesource ~/.bash_profilekubectl get node #測試查看集群狀態和系統容器 kubectl get nodes -o wide kubectl get pods -A四:創建pod并開啟nginx服務(可以在root用戶)
1、創建兩個.yml文件
[root@k8s-master ~]# cat nginx-dep.yml apiVersion: apps/v1 kind: Deployment metadata:name: nginx-deployment spec:selector:matchLabels:app: nginxreplicas: 2template:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:alpineports:- containerPort: 80 [root@k8s-master ~]# [root@k8s-master ~]# cat nginx-svc.yml apiVersion: v1 kind: Service metadata:name: nginx-service spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80nodePort: 30080type: NodePort [root@k8s-master ~]#2、創建pod并查看狀態
kubectl apply -f nginx-dep.ymlkubectl get deployment nginx-deployment -o wide[root@k8s-master ~]# kubectl get deployment nginx-deployment -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR nginx-deployment 4/4 4 4 2d nginx nginx:alpine app=nginx [root@k8s-master ~]#3、啟動service暴露端口
# 啟動服務 kubectl apply -f nginx-svc.yml # 查看 [root@k8s-master ~]# kubectl get svc nginx-service -o wide NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR nginx-service NodePort 10.43.222.41 <none> 80:30080/TCP 2d app=nginx # 詳細 [root@k8s-master ~]# kubectl describe svc nginx-service Name: nginx-service Namespace: default Labels: <none> Annotations: <none> Selector: app=nginx Type: NodePort IP Families: <none> IP: 10.43.222.41 IPs: <none> Port: <unset> 80/TCP TargetPort: 80/TCP NodePort: <unset> 30080/TCP Endpoints: 10.42.1.15:80,10.42.1.18:80,10.42.2.18:80 + 1 more... Session Affinity: None External Traffic Policy: Cluster Events: <none>4、瀏覽器驗證
五:補充
查看節點信息:kubectl get nodes -o wide
查看有哪些pod:kubectl get pods -o wide
查看pod詳細信息:kubectl describe pod nginx-deployment-7b45b4c665-78kj6?
查看pod日志:kubectl logs nginx-deployment-7b45b4c665-78kj6
擴縮:kubectl scale deployment/nginx-deployment --replicas=10
回滾:kubectl rollout undo deployment/k8s-nginx-1.18
版本升級:kubectl set image deployment/k8s-nginx-1.18 nginx=nginx:2.10.1
總結
以上是生活随笔為你收集整理的使用RKE搭建docker-k8s集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 产业分析:国有资本创新发展
- 下一篇: 营销QQ咨询服务引入代码