目錄
?
目錄
一、虛擬機(jī)安裝
1.1、軟件安裝
1.2、Vagrant生成Vagrantfile
1.3、Vagrant創(chuàng)建虛擬機(jī)
1.4、Vagrant連接虛擬機(jī)
二、Linux配置
?2.1、開啟root密碼訪問權(quán)限
2.2、禁用防火墻
2.3、關(guān)閉交換區(qū)
2.4、將橋接的IPv4流量傳遞到iptables的鏈,更精確統(tǒng)計(jì)流量
2.5、Host設(shè)置
2.6、時(shí)區(qū)設(shè)置
三、Docker安裝
四、K8S安裝
4.1、添加k8s的阿里云yum源
4.2、kubeadm,kubelet 和 kubectl 安裝
4.3、部署k8s-master
4.3.1、制作鏡像下載腳本
4.3.2、kubeadm安裝
4.3.3、測試 kubectl
4.4、master 安裝pod網(wǎng)絡(luò)插件
4.5、加入node 節(jié)點(diǎn)
五、其他
一、虛擬機(jī)安裝
1.1、軟件安裝
?安裝虛擬化系統(tǒng)Oracle virtualbox及管理工具Vagrant
1.2、Vagrant生成Vagrantfile
執(zhí)行命令:vagrant init?生成Vagrantfile
1.3、Vagrant創(chuàng)建虛擬機(jī)
通過vagrantfile來創(chuàng)建三個(gè)虛擬機(jī),分別為k8s-node1,k8s-node2和k8s-node3,內(nèi)容如下
# 編輯Vagrantfile,替換為如下內(nèi)容
Vagrant.configure("2") do |config|
(1..3).each do |i|
config.vm.define "k8s-node#{i}" do |node|
# 設(shè)置虛擬機(jī)Box
node.vm.box = "centos/7"
# 設(shè)置虛擬機(jī)主機(jī)名
node.vm.hostname = "k8s-node#{i}"
# 設(shè)置虛擬機(jī)IP
node.vm.network "private_network", ip: "192.168.56.#{99+i}", nemask:"255.255.255.0"
# 設(shè)置主機(jī)與虛擬機(jī)的共享目錄
#node.vm.synced_flder "~/Docments/vagrant/share", "/home/vagrant/share"
# VirtaulBox相關(guān)配置
node.vm.provider "virtualbox" do |v|
# 設(shè)置虛擬機(jī)名稱
v.name = "k8s-node#{i}"
v.memory = 1536
# 設(shè)置虛擬機(jī)CPU個(gè)數(shù)
v.cpus = 2
end
end
end
end
執(zhí)行命令:vagrant up 創(chuàng)建虛擬機(jī)
1.4、Vagrant連接虛擬機(jī)
執(zhí)行命令:vagrant ssh xxx
二、Linux配置
?2.1、開啟root密碼訪問權(quán)限
# 修改配置 PermitRootLogin yes PasswordAuthentication yes
sudo vi /etc/ssh/sshd_config
# 重啟sshd服務(wù)
service sshd restart
2.2、禁用防火墻
sudo sed -i 's/enforcing/disabled/' /etc/selinux/config
# 關(guān)閉selinux防火墻
setenforce 0
2.3、關(guān)閉交換區(qū)
sudo sed -ri 's/.swap./#&/' /etc/fstab
2.4、將橋接的IPv4流量傳遞到iptables的鏈,更精確統(tǒng)計(jì)流量
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
# 應(yīng)用 sysctl 參數(shù)而不重新啟動
sudo sysctl --system
2.5、Host設(shè)置
vi /etc/hosts
10.0.2.15 k8s-node1
10.0.2.4 k8s-node2
10.0.2.5 k8s-node3
2.6、時(shí)區(qū)設(shè)置
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
三、Docker安裝
Docker 安裝與使用
四、K8S安裝
4.1、添加k8s的阿里云yum源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
4.2、kubeadm,kubelet 和 kubectl 安裝
yum install -y kubelet-v1.25.2 kubeadm-v1.25.2 kubectl-v1.25.2
systemctl enable kubelet & systemctl start kubelet
#查看kubelet運(yùn)行日志:
journalctl -xefu kubelet
4.3、部署k8s-master
4.3.1、制作鏡像下載腳本
#!/bin/bash
images=(
kube-apiserver:v1.25.2
kube-proxy:v1.25.2
kube-controller-manager:v1.25.2
kube-scheduler:v1.25.2
coredns:1.6.5
etcd:3.4.3-0
pause:3.6
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
??執(zhí)行命令:chmod 700 master_images.sh 賦予文件執(zhí)行權(quán)限,并執(zhí)行腳本下載鏡像
# 下載 pause鏡像
ctr -n k8s.io i pull -k registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6
# 修改pause鏡像的tag
ctr -n k8s.io i tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6 k8s.gcr.io/pause:3.6
4.3.2、kubeadm安裝
- 配置文檔
執(zhí)行命令:kubeadm config print init-defaults 生成默認(rèn)配置文檔 kubeadm-config.yaml,修改
localAPIEndpoint:advertiseAddress
nodeRegistration:name
# 增加kubelet驅(qū)動設(shè)置為systemd
---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 10.0.2.15
bindPort: 6443
nodeRegistration:
criSocket: unix:///var/run/containerd/containerd.sock
imagePullPolicy: IfNotPresent
name: k8s-node1
taints: null
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers #指定阿里云鏡像倉庫地址
kind: ClusterConfiguration
kubernetesVersion: 1.25.2
networking:
dnsDomain: cluster.local
serviceSubnet: 10.96.0.0/16
scheduler: {}
---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd
- 安裝master
????????命令:sudo kubeadm init --config kubeadm-config.yaml --v=5 # 安裝,輸出詳細(xì)日志,保存執(zhí)行
- 按照上述執(zhí)行結(jié)果,進(jìn)行kuke配置
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
- k8s重置
????????執(zhí)行命令:kubeadm reset -f
- kubelet 異常處理:containerd重啟
rm /etc/containerd/config.toml sudo systemctl restart containerd
4.3.3、測試 kubectl
執(zhí)行命令:kubectl get nodes 查看所有節(jié)點(diǎn)
4.4、master 安裝pod網(wǎng)絡(luò)插件
- flannel插件
????????kubectl apply -f kube-flannel.yml
# fnannel 安裝缺失subnet.envwen文件
vi /run/flannel/subnet.env # 添加如下內(nèi)容
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true
#flannel網(wǎng)絡(luò)插件時(shí)發(fā)現(xiàn)flannel一直處于CrashLoopBackOff狀態(tài)
# kube-controller-manager.yaml增加參數(shù)
vi /etc/kubernetes/manifests/kube-controller-manager.yaml
--allocate-node-cidrs=true
--cluster-cidr=10.244.0.0/16
4.5、加入node 節(jié)點(diǎn)
- master操作
#查看節(jié)點(diǎn)
kubectl get pods
#定義node角色
kubectl label node k8s-node2 node-role.kubernetes.io/worker=worker
kubectl label node k8s-node3 node-role.kubernetes.io/worker=worker
# 查看所有空間的節(jié)點(diǎn)
kubectl get ns
kubectl get pods --all-namespaces
# 查看node節(jié)點(diǎn)日志
kubectl logs node-name -n namespace
五、其他
k8s.gcr.io/pause:3.6拉取超時(shí)處理
docker pull rancher/pause:3.6文章來源:http://www.zghlxwxcb.cn/news/detail-774343.html
docker tag rancher/pause:3.6 k8s.gcr.io/pause:3.6文章來源地址http://www.zghlxwxcb.cn/news/detail-774343.html
到了這里,關(guān)于K8S虛擬機(jī)安裝的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!