最近很多小伙伴都在问Ubuntu国内安装kubernetes和ubuntu安装kubuntu这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展apt-getupdate失败ubunt
最近很多小伙伴都在问Ubuntu 国内安装 kubernetes和ubuntu安装kubuntu这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展apt-get update 失败 ubuntu:Tempory failure resolving 'cn.archive.ubuntu.com ubuntu、docker for mac 安装 kubernetes、kubernetes dashboard、install nginx on ubuntu install ubuntu usb install ubuntu 14.04 ubuntu install jd、kubernetes (九) kubernetes 控制器等相关知识,下面开始了哦!
本文目录一览:- Ubuntu 国内安装 kubernetes(ubuntu安装kubuntu)
- apt-get update 失败 ubuntu:Tempory failure resolving 'cn.archive.ubuntu.com ubuntu
- docker for mac 安装 kubernetes、kubernetes dashboard
- install nginx on ubuntu install ubuntu usb install ubuntu 14.04 ubuntu install jd
- kubernetes (九) kubernetes 控制器
Ubuntu 国内安装 kubernetes(ubuntu安装kubuntu)
由于墙的原因,国内要安装 kubernetes 非常的麻烦,因此只要解决这个问题,就可以顺利安装 kubernetes 的 三个官法工具 kubelet、kubeadm、kubectl。
安装环境:
OS:Ubuntu 18.04.1
-
添加相应的源
我在这里使用阿里源, 命令如下:
sudo vim /etc/apt/sources.list.d/kubernetes.list # 将下面的阿里源加入文件中 deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main # 也可以选择中科大的源 deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
-
下载kubelet、kubeadm、kubectl
这里先运行一下
apt udpate
,会报错,原因是缺少相应的key,可以通过下面的命令添加(E084DAB9 为上面报错的key后8位)gpg --keyserver keyserver.ubuntu.com --recv-keys E084DAB9 gpg --export --armor E084DAB9 | sudo apt-key add -
然后就可以正常下载了。
apt-get update && apt-get install -y kubelet kubeadm kubectl
-
关闭swap
如果不关闭kubernetes运行会出现错误, 即使安装成功了,node重启后也会出现kubernetes server运行错误。
#暂时关闭, sudo swapoff -a # 永久关闭 sudo vim /etc/fstab 注释掉swap那一行就行 虚拟机最好把内存分配调整到2G以上,否则关掉swap会导致图形界面难以进入。
-
获取镜像
由于官方镜像地址被墙,所以我们需要首先获取所需镜像以及它们的版本。然后从国内阿里的镜像站获取。
kubeadm config images list
获取镜像列表后可以通过下面的脚本从阿里云获取:
images=( kube-apiserver:v1.13.4 kube-controller-manager:v1.13.4 kube-scheduler:v1.13.4 kube-proxy:v1.13.4 pause:3.1 etcd:3.2.24 coredns:1.2.6 ) for imageName in ${images[@]} ; do docker pull registry.aliyuncs.com/google_containers/$imageName docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName docker rmi registry.aliyuncs.com/google_containers/$imageName done
-
初始化环境
如果上面的镜像都下载好了,这步就比较简单了,直接运行下面的命令就行了
kubeadm init --apiserver-advertise-address 172.16.30.140 --pod-network-cidr=10.244.0.0/16
-
配置授权信息
根据init成功后的提示命令进行。
主要是为了保存相关的配置信息在用户目录下,这样不用每次都输入相关的认证信息。
类似下面的命令,具体以你个人的提示为准
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
-
保存添加Node的命令
类似于
kubeadm join 172.16.30.140:6443 --token aat409.plzb63oim93gjucq --discovery-token-ca-cert-hash sha256:5b906d68640eeddcd1381bf76dc0da5c522d71ceb89c547ac5a61fded064e54e
这条命令一定保存好,因为后期没法重现的!!
-
删除node的命令:
在master节点上执行:
kubectl drain node1-k8s --delete-local-data --force --ignore-daemonsets kubectl delete node node1-k8s
在节点上执行
kubeadm reset
-
添加网络插件
上面安装成功后如果通过查询kube-system下Pod的运行情况,会放下和网络相关的Pod都处于Pending的状态,这是因为缺少相关的网络插件,而网络插件有很多个(以下任选一个),可以选择自己需要的。
-
flannel
需要在kubeadm init 时设置 --pod-network-cidr=10.244.0.0/16
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
-
weave
sysctl net.bridge.bridge-nf-call-iptables=1 kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
-
calico
需要 kubeadm init 时设置 --pod-network-cidr=192.168.0.0/16
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
-
CNI bridge
mkdir -p /etc/cni/net.d cat >/etc/cni/net.d/10-mynet.conf <<-EOF { "cniVersion": "0.3.0","name": "mynet","type": "bridge","bridge": "cni0","isGateway": true,"ipMasq": true,"ipam": { "type": "host-local","subnet": "10.244.0.0/16","routes": [ {"dst": "0.0.0.0/0"} ] } } EOF cat >/etc/cni/net.d/99-loopback.conf <<-EOF { "cniVersion": "0.3.0","type": "loopback" } EOF
-
apt-get update 失败 ubuntu:Tempory failure resolving 'cn.archive.ubuntu.com ubuntu
当运行apt-get update后出现如下错误时:E: Some index files Failed to download,they have been ignored,or old ones used instead.
可以将目录下/var/lib/apt/lists/partial/所有的文件清掉,再次运行apt-get update即可!自带源在大陆不好。
出现以下错误:
ubuntu:Tempory failure resolving ''cn.archive.ubuntu.com ubuntu
1,重启生效:
sudovi/etc/resolvconf/resolv.conf.d/base(这个文件默认是空的)
在里面插入:
nameserver8.8.8.8
nameserver8.8.4.4
如果有多个DNS就一行一个
修改好保存,然后执行
sudoresolvconf-u
再看/etc/resolv.conf,最下面就多了2行:
cat/etc/resolv.conf
#Dynamicresolv.conf(5)fileforglibcresolver(3)generatedbyresolvconf(8)
#DONOTEDITTHISFILEBYHAND--YOURCHANGESWILLBEOVERWRITTEN
可以看到我们的设置已经加上了,然后再ping一个域名,当时就可以解析了,无需重启。
2,重启失效:
配置文件地址 /etc/resolv.conf
使用编辑器打开
改为如下内容:
search localdomain
nameserver 202.96.128.86 希望修改成的DNS
nameserver 202.96.128.166 备用DNS
重启网络:sudo /etc/init.d/networking restart。即可
docker for mac 安装 kubernetes、kubernetes dashboard
-
安装参考地址(按照此文档,安装成功):https://yq.aliyun.com/articles/508460
-
官方说明:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
-
常用命令 kubectl 命令:
kubectl get namespaces
kubectl get pods --namespace kube-system
kubectl get deployments --namespace kube-system
kubectl get services --namespace kube-system
kubectl -n kube-system edit service kubernetes-dashboard
kubectl get pods
kubectl get deployments
kubectl get services
kubectl config view
获取令牌,然后登陆 kubernetes dashboard
➜ ~ kubectl get secrets
NAME TYPE DATA AGE
default-token-6ljm8 kubernetes.io/service-account-token 3 6h
➜ ~ kubectl describe secrets default-token-6ljm8
Name: default-token-6ljm8
Namespace: default
Labels: <none>
Annotations: kubernetes.io/service-account.name=default
kubernetes.io/service-account.uid=77d014c2-0804-11e9-acd8-025000000001
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1025 bytes
namespace: 7 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImRlZmF1bHQtdG9rZW4tNmxqbTgiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGVmYXVsdCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6Ijc3ZDAxNGMyLTA4MDQtMTFlOS1hY2Q4LTAyNTAwMDAwMDAwMSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OmRlZmF1bHQifQ.G9TGa4KGj5B-cMv-0-vuangR2_tFiQ1nJMgtsEPs1BEwPAyjmaC-BL5y0Ux9HyC1mlt0DklO-8_o41i4OD_w0wLymxi8zZQxgY7Tlu3_oE5OKnK58xWN-mMTKKnvfDpZrIBbkWQ5EB49LC7QiTBKGAoixGyOBvU1fmD2AzpdO3sWvNsaOWbMLFcwzHA-M2V-CKU3I07Hxs6uIi9juk4IqkTryfvCDUafTrubpkVktwQr7UwzvmKfbPoWLyn1tbCDhR3Il64daoTE9nlmqWwYZZFmfaZjWWWYfi3QPXuNUNpXRVVd_6gcjUzebR1o-22KoOUbobQ94K-1bYJOQSZNnA
将 token 部分复制到登录页的 token 输入框,登陆即可。 出处:http://www.cnblogs.com/along21/p/9811860.html#auto_id_11
install nginx on ubuntu install ubuntu usb install ubuntu 14.04 ubuntu install jd
kubernetes (九) kubernetes 控制器
kubernetes 控制器
kubernetes 部署应用的流程
pod 和 controller 控制器的关系
- controllers: 在集群上管理和运行容器的对象
- pod 和 controller 通过 label-selector 关联
- Pod 通过控制器实现应用的运维,例如伸缩,升级等
deployment 控制器
- 功能:
- 用于部署无状态应用
- 管理 POD 和 Replicaset
- 具有上线部署,副本设定,滚动升级,回滚等功能
- 提供声明式更新
- 应用场景: Web 服务,微服务,API
deployment 控制器的定义
kubectl explain deployment.spec
$ vim deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
namespace: prod
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.18-alpine
ports:
- containerPort: 80
$ kubectl apply -f deployment.yml
$ kubectl get deploy -n prod -o wide
被控制对象是放在 template 下的 containers
通过命令行操作 deployment
- 部署应用
$ kubectl create deployment web --image=nginx:1.14
$ kubectl get deploy,pods
- 暴露应用
$ kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web
$ kubectl get svc,deploy,pod
- 应用升级
$ kubectl set image deploy/web nginx=nginx:1.15
$ kubectl rollout status deploy/web #查看升级状态
- 应用回滚
$ kubectl rollout history deploy/web #查看版本
$ kubectl rollout undo deploy/web #回滚到上一个版本
$ kubectl rollout undo deploy/web --to-revision=1 #回到指定版本
- 扩缩容
$ kubectl scale deployment web --replicas=10 #扩容
$ kubectl scale deployment web --replicas=1 #缩容
daemonSet
- 功能
- 在每一个 node 上运行一个 POD
- 新加入的 node 也会自动运行一个 POD
- 引用场景: Agent
Job
- 分类
- 普通 Job
- 定时任务
- 特点: 一次性执行
- 应用场景: 离线数据处理,视频解码业务
$ cat job.yml
apiVersion: batch/v1
kind: Job
metadata:
name: pi
namespace: prod
spec:
template:
spec:
containers:
- name: pi
image: perl
command: ["perl","-Mbignum=bpi","-wle","print bpi(20000)"]
restartPolicy: Never
backoffLimit: 4
$ kubectl get pod -n prod
$ kubectl get job -n prod
$ kubectl logs -f pi-rjdhm -n prod
CronJob
- 定时任务,类似于 linux 的 crontab
- 用用场景: 通知任务,备份任务
$ vim cronjob.yml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cron
namespace: prod
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date;echo hello from the kubernetes cluster
restartPolicy: OnFailure
$ kubectl get cronjob -n prod
$ kubectl logs -f cron-1595347620-nptsf -n prod
关于Ubuntu 国内安装 kubernetes和ubuntu安装kubuntu的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于apt-get update 失败 ubuntu:Tempory failure resolving 'cn.archive.ubuntu.com ubuntu、docker for mac 安装 kubernetes、kubernetes dashboard、install nginx on ubuntu install ubuntu usb install ubuntu 14.04 ubuntu install jd、kubernetes (九) kubernetes 控制器的相关信息,请在本站寻找。
本文标签: